Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator
2017-08-25 05:42
711 查看
导读
实例
Spring-AOP 自动创建代理之BeanNameAutoProxyCreator
Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator
Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator
准备工作参考 :http://blog.csdn.net/yangshangwei/article/details/77519375#准备工作
接口
POJO
切面POJO
配置文件
单元测试
运行结果:
可以看到greetTo被正确的织入了增强.
实例
导读
Spring-AOP 自动创建代理Spring-AOP 自动创建代理之BeanNameAutoProxyCreator
Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator
Spring-AOP 自动创建代理之AnnotationAwareAspectJAutoProxyCreator
实例
代码已托管到Github—> https://github.com/yangshangwei/SpringMaster准备工作参考 :http://blog.csdn.net/yangshangwei/article/details/77519375#准备工作
接口
package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf; public interface Waiter { public void greetTo(String name); public void serverTo(String name); }
POJO
package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf; public class NaiveWaiter implements Waiter { @Override public void greetTo(String name) { System.out.println("NaiveWaiter Greet To " + name); } @Override public void serverTo(String name) { System.out.println("NaiveWaiter Server To " + name); } }
切面POJO
package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; /** * * * @ClassName: PreGreetingAspect * * @Description: 切面类 * * @author: Mr.Yang * * @date: 2017年8月24日 下午3:21:15 */ // 通过@Aspect将PreGreetingAspect标注为一个切面 @Aspect public class PreGreetingAspect { // 定义切点和增强类型 @Before("execution(* greetTo(..))") public void beforeGreeting() {// 增强的横切逻辑 System.out.println("How are you ?"); } }
配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 通过配置使用@AspectJ --> <!-- 目标Bean --> <bean id="waiter" class="com.xgj.aop.spring.advisor.aspectJ.aspectJByConf.NaiveWaiter"/> <!-- 使用了@AspectJ注解的切面类 --> <bean class="com.xgj.aop.spring.advisor.aspectJ.aspectJByConf.PreGreetingAspect"/> <!-- 自动代理创建器,自动将@AspectJ注解切面类织入目标Bean中 --> <bean class="org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator"/> </beans>
单元测试
package com.xgj.aop.spring.advisor.aspectJ.aspectJByConf; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * * * @ClassName: PreGreetingAspectTest * * @Description: * * @author: Mr.Yang * * @date: 2017年8月24日 下午3:21:29 */ public class PreGreetingAspectTest { @Test public void test() { ApplicationContext ctx = new ClassPathXmlApplicationContext( "classpath:com/xgj/aop/spring/advisor/aspectJ/aspectJByConf/conf-aspectJ.xml"); Waiter naiveWaiter = ctx.getBean("waiter", Waiter.class); naiveWaiter.greetTo("XiaoGongJiang"); naiveWaiter.serverTo("XiaoGongJiang"); } }
运行结果:
2017-08-24 17:41:16,210 INFO [main] (AbstractApplicationContext.java:583) - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@24177697: startup date [Thu Aug 24 17:41:16 BOT 2017]; root of context hierarchy 2017-08-24 17:41:16,609 INFO [main] (XmlBeanDefinitionReader.java:317) - Loading XML bean definitions from class path resource [com/xgj/aop/spring/advisor/aspectJ/aspectJByConf/conf-aspectJ.xml] How are you ? NaiveWaiter Greet To XiaoGongJiang NaiveWaiter Server To XiaoGongJiang
可以看到greetTo被正确的织入了增强.
相关文章推荐
- spring中BeanNameAutoProxyCreator和AnnotationAwareAspectJAutoProxyCreator两种AOP代理方式使用总结
- Spring-AOP 自动创建代理之BeanNameAutoProxyCreator
- Spring-AOP 自动创建代理之DefaultAdvisorAutoProxyCreator
- spring中BeanNameAutoProxyCreator和AnnotationAwareAspectJAutoProxyCreator两种AOP代理方式使用总结
- Spring源码-AOP(六)-自动代理与DefaultAdvisorAutoProxyCreator
- spring用BeanNameAutoProxyCreator自动创建事务代理
- spring用BeanNameAutoProxyCreator自动创建事务代理
- Spring5.0.4 AOP 使用AspectJ方式自动代理注解(@EnableAspectJAutoProxy)
- spring用BeanNameAutoProxyCreator自动创建事务代理
- spring(一) spring用BeanNameAutoProxyCreator自动创建事务代理
- SpringAop源码情操陶冶-AspectJAwareAdvisorAutoProxyCreator
- spring用BeanNameAutoProxyCreator自动创建事务代理
- spring的启动过程04.2-AnnotationAwareAspectJAutoProxyCreator处理器
- AnnotationAwareAspectJAutoProxyCreator is only available on Java 1.5 and higher
- 用BeanNameAutoProxyCreator自动创建事务代理
- 使用DefaultAdvisorAutoProxyCreator实现spring的自动代理
- BeanNameAutoProxyCreator 自动创建代理(拦截器)
- spring 配置实例4(使用DefaultAdvisorAutoProxyCreator 自动代理,比较省时省力的做法)
- Spring 使用 DefaultAdvisorAutoProxyCreator创建AOP 小结
- AnnotationAwareAspectJAutoProxyCreator is only available on Java 1.5 and higher