applicationContext.xml文件如下:
-----------------------------------------------------------
常用切面编程的模板文件用时拷贝一下:
源文件下载地址:http://pan.baidu.com/share/link?shareid=1804614721&uk=1057836303
----------------------------------下面是配置文件方式实现切面编程
----------------------------------------------
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <aop:aspectj-autoproxy /> <!-- 支持注解方式 --> <context:component-scan base-package="com.bjsxt"/> </beans>
-----------------------------------------------------------
常用切面编程的模板文件用时拷贝一下:
package com.bjsxt.test.spring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; /** * 日志拦截器 */ @Aspect @Component public class LogInterceptor { // public User add(User user) // @Pointcut("execution(public * com.bjsxt.test.spring.aop.*.add*(..))") @Pointcut("execution(public * com.bjsxt.test.spring.aop.*.get*(..))") //声明一个名字为log的切入点 private void log(){//如果其他的地方要引用这个切入点,,就写这个方法名 } @Before("log()"+"&&args(user)") //使用pointcut-->log .前置通知.处理传入的参数跟下面的形参保持一致即可。 private void before(User user){ System.out.println("方法执行前:"+user.getUname()); System.out.println("方法执行前!"); } @After("log()") //最终后置通知。不管有无异常,最终都会执行! private void after(){ System.out.println("方法执行后!"); } @AfterReturning("log()") //方法正常结束,后置通知 private void afterReturning(){ System.out.println("方法执行后!after returning!"); } @AfterThrowing("log()") //抛出异常会执行,异常通知 private void afterThrowing(){ System.out.println("方法执行后!after throwing!"); } @Around("log()") //环绕通知在一个方法执行之前和之后执行 private Object around(ProceedingJoinPoint pjp){ System.out.println("环绕通知,方法执行前!"); Object obj = null; try { obj = pjp.proceed();//出调用真正的方法 } catch (Throwable e) { e.printStackTrace(); } System.out.println("环绕通知,方法执行后!"); return obj; } }
源文件下载地址:http://pan.baidu.com/share/link?shareid=1804614721&uk=1057836303
----------------------------------下面是配置文件方式实现切面编程
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <aop:aspectj-autoproxy /> <!-- 支持注解方式 --> <context:component-scan base-package="com.bjsxt"/> <!-- 采用配置方式使用AOP --> <bean id="logInterceptor" class="com.bjsxt.spring.aop.LogInterceptor"></bean> <aop:config > <!--定义切点 名字log --> <aop:pointcut expression="execution(public !java.lang.String com.bjsxt.spring.aop.UserDaoImpl.*(com.bjsxt.spring.aop.User,..))" id="log"/> <!-- 定义切面 logAspect--> <aop:aspect id="logAspect" ref="logInterceptor"> <!-- 定义前置通知 --> <!-- arg-names="user,age,name,test" 多参数 arg-names 指定before参数名 --> <aop:before method="before" arg-names="user" pointcut="execution(!java.lang.String com.bjsxt.spring.aop.UserDaoImpl.add(..)) and args(user)" /> <!-- 后置通知 --> <aop:after method="after" pointcut-ref="log" /> <aop:after-throwing method="afterThrowing" pointcut-ref="log"/> <aop:after-returning method="afterReturning" pointcut-ref="log"/> <aop:around method="around" pointcut-ref="log"/> </aop:aspect> </aop:config> </beans>
----------------------------------------------
package com.bjsxt.spring.aop; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; /** * 日志拦截器 */ public class LogInterceptor { // @Pointcut("execution(!java.lang.String com.cssxt.spring.aop.UserDaoImpl.add(com.cssxt.spring.aop.User,..))") //生命一个名字为log的切入点 private void log(){ } // @Before("log()"+"&&args(user)") //使用pointcut-->log .前置通知.处理传入的参数跟下面的形参保持一致即可。 private void before(User user){ System.out.println("方法执行前:"+user.getUname()); System.out.println("方法执行前!"); } // @After("log()") //最终后置通知。不管有无异常,最终都会执行! private void after(){ System.out.println("方法执行后!"); } // @AfterReturning("log()") //方法正常结束,后置通知 private void afterReturning(){ System.out.println("方法执行后!after returning!"); } // @AfterThrowing("log()") //抛出异常会执行,异常通知 private void afterThrowing(){ System.out.println("方法执行后!after throwing!"); } // @Around("log()") //环绕通知在一个方法执行之前和之后执行 private Object around(ProceedingJoinPoint pjp){ System.out.println("环绕通知,方法执行前!"); Object obj = null; try { obj = pjp.proceed(); } catch (Throwable e) { e.printStackTrace(); } System.out.println("环绕通知,方法执行后!"); return obj; } }
发表评论
-
log4j.properties配置详解
2016-01-18 16:50 1275Log4J的配置文件(Configuration File)就 ... -
Java读写文件中文乱码问题
2015-07-20 17:49 2957问题:在用Java程序进行读写含中文的txt文件时,经常会出现 ... -
jdbc properties文件配置
2014-05-05 21:33 1327前言 JDBC(Java Data Base Connecti ... -
oracle去除重复记录查询统计
2013-10-15 10:43 1331---统计各个psam卡号的数量(oracle&m ... -
js获取单选按钮(radio)组的值来控制tr td
2013-09-23 18:37 1834<script type="text/java ... -
反射获取类的set和get
2013-09-08 21:27 1057package com.reflect; import ... -
oracle procedure trigger 小例子
2013-09-08 21:14 811--sql window中写存储过程(本例对dept_co ... -
利用已存在的表创建另一个表;三表关联查询
2013-08-20 08:33 1041利用已存在的表创建另一个表(oracle,mssql,mysq ... -
java 获取当前时间
2013-08-18 21:48 933获取当前时间的总结 import java.text. ... -
ajaxUtil_js略记
2013-07-15 18:46 927function createAjaxObj(){ v ... -
xml的增删改操作
2013-07-08 19:21 1022package com.xml.stu; import ... -
oracle语句略记
2013-06-30 23:14 989oracle10g创建序列 1.pl/sql登录后可在Seq ... -
quartz的作业调度触发Cron表达式说明
2013-06-30 09:49 1928quartz的作业调度触发Cron表达式说明 Cron表达式 ... -
Quart模板示例
2013-06-29 23:29 937package com.sxt.test; import ...
相关推荐
49-Spring_JDBC模板笔记 50-Spring_Struts、Hibernate支持笔记 51-52使用Struts + Spring + Hibernate完成用户登陆笔记 53使用Struts + Spring + Hibernate完成分页笔记 54留言管理程序_Struts + Spring + Hibernate...
49-Spring_JDBC模板笔记 50-Spring_Struts、Hibernate支持笔记 51-52使用Struts + Spring + Hibernate完成用户登陆笔记 53使用Struts + Spring + Hibernate完成分页笔记 54留言管理程序_Struts + Spring + Hibernate...
49-Spring_JDBC模板笔记 50-Spring_Struts、Hibernate支持笔记 51-52使用Struts + Spring + Hibernate完成用户登陆笔记 53使用Struts + Spring + Hibernate完成分页笔记 54留言管理程序_Struts + Spring + Hibernate...
Spring容器简介——AOP AOP核心概念 Spring AOP的使用 Spring AOP常见用法 示例代码
Context-support模块:提供了对第三方库嵌入Spring应用的集成支持,比如缓存(EhCache、Guava、JCache)、邮件服务(JavaMail)、任务调度(CommonJ、Quartz)和模板引擎(FreeMarker、JasperReports、速率)。 SpEL模块:...
NULL 博文链接:https://shaw-n-lu.iteye.com/blog/1747124
49-Spring_JDBC模板笔记.pdf 50-Spring_Struts、Hibernate支持笔记.pdf 51-52使用Struts + Spring + Hibernate完成用户登陆笔记.pdf 53使用Struts + Spring + Hibernate完成分页笔记.pdf 54留言管理程序_Struts + ...
1. spring-aop-4.1.1.RELEASE.jar Spring面向切面编程,提供AOP实现。Spring Beans之上将横切关注点模块化 2. spring-aspects-4.1.1.RELEASE.jar 提供的对AspectJ框架的整合,也是A面向切面编程。 AspectJ可用于...
Spring初探 准备工作 构建Spring基础代码 Spring 基础语义 Dependency Injection 依赖注入的几种实现类型 ... Dynamic Proxy 与Spring AOP CGLib 与 Spring AOP AOP 应用 DAO Support Remoting
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...
内容: Spring资源管理 Spring表达式语言 ...AOP切面编程-代理功能的加强 Spring与JMS消息组件 Spring与WebService Spring与Redis数据库 JDBC操作模板 Spring事务管理 SpringDataJPA SpringMVC SpringSecurity
6.4.2. Spring AOP中使用@AspectJ还是XML? 6.5. 混合切面类型 6.6. 代理机制 6.7. 编程方式创建@AspectJ代理 6.8. 在Spring应用中使用AspectJ 6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1....
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...
基于spring boot 2实现的各类小例子。有aop日志,发送邮件,模板导出excel,模板导出word
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...
【第七章】 对JDBC的支持 之 7.2 JDBC模板类 ——跟我学spring3 【第七章】 对JDBC的支持 之 7.3 关系数据库操作对象化 ——跟我学spring3 【第七章】 对JDBC的支持 之 7.4 Spring提供的其它帮助 ——跟我学...
业务层:Spring IOC、Aop事务控制、Spring Task任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis等。 控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等 微服务治理:Eureka、...
JeePlatform项目是一款以Activiti为工作流引擎,以Spring Framework为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,基于本平台可以实现快速开发,实现企业信息管理的...
代理模式和观察者模式在Spring AOP和事件驱动模型中得到了广泛应用,提供了强大的切面和事件处理能力。策略模式和模板方法模式则分别提供了资源访问的灵活性和统一处理逻辑的框架。最后,责任链模式在Spring的AOP...