spring中AspectJ(16)
2016-01-18 13:08
543 查看
2016/1/18 11:44:08
1.AspectJ
@AspectJ的风格类似纯Java注解的普通Java类Spring可以使用AspectJ来做切入点解析
AOP的运行时仍旧是纯的Spring AOP,对AspectJ的编译器或者织入无依赖性
@AspectJ切面使用@Aspect注解配置,拥有@Aspect的任何bean将被Spring自动识别注册并应用
用@Aspect注解的类可以有方法和字段,它们也可能包括切入点(pointcut),通知(advice),和引入(Introduction)声明
Aspect注解是不能通过类路径自动检测发现的,所以需要配合使用@Component注释或者在xml配置bean
一个类中的@Aspect注解标识它为一个切面,并且将自己从自动代理中排除
2.切入点的定义
一个切入点可以通过一个普通的方法定义来提供,并且切入点表达式使用@Pointcut注解,方法返回类型必须为void环绕通知使用@Around注解来声明,通知方法的第一个参数必须是ProceedingJoinPoint类型
在通知内部调用ProceedingJoinPoint的proceed()方法会导致执行真正的方法,传入一个Object[]对象,数组中的值将被做为参数传递给方法
@Aspect public class AspectClass { // 配置前置通知 @Before("execution(* com.lovo.inter..*.t*(..))") public void beforeMethod() { System.out.println("执行beforeMethod方法"); } // 配置后置通知 @After("execution(* com.lovo.inter..*.t*(..))") public void afterMethod() { System.out.println("执行after方法"); } // 配置环绕通知 @Around("execution(* com.lovo.inter..*.g*(..))") public Object press(ProceedingJoinPoint point) { System.out.println("环绕执行前"); Object returnObj = null; try { returnObj = point.proceed(); } catch (Throwable e) { e.printStackTrace(); } System.out.println("环绕执行后"); return returnObj; } }
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- 详解Java的Spring框架中的事务管理方式
- 解析Java的Spring框架的BeanPostProcessor发布处理器
- Java开发框架spring实现自定义缓存标签
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- spring boot实战之内嵌容器tomcat配置
- 浅析Java的Spring框架中IOC容器容器的应用
- 基于Spring框架的Shiro配置方法