Spring核心概念 (3)

before()方法也就是在我们代码执行之前运行,afterReturning()在我们执行代码之后运行.Join Point类型的参数,Spring会自动注入该实例,通过getTarget()方法可以得到被代理的目标对象,getSignature()方法返回被代理的目标方法,getArgs()方法返回传递给目标方法的参数数组

在Spring配置文件中对相关组件进行声明

<bean> </bean> <bean> <property ref="dao"></property> </bean> <bean></bean>

接下来在Spring配置文件中进行AOP相关的配置,首先定义切入点
定义切入点

<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <bean> </bean> <bean> <property ref="dao"></property> </bean> <bean></bean> <aop:config> <!--定义一个切入点表达式,并命名为“pointcut”--> <aop:pointcut expression="execution(public void addNewUser(entity.User))"/> </aop:config> </beans>

与AOP相关的配置都放在

public * addNewUser(entity.User):* 表示匹配所有类型的返回值

public void * (entity.User):* 表示匹配所有方法名。

public void addNewUser(..):.. 表示匹配所有参数个数和类型

“ * com.service.* .*(..):匹配com.service包下所有类的所有方法

“ * com.service..* .*(..):匹配com.service包及其子包下所有类的所有方法

大家可以根据自己的需求来设置切入点的匹配规则,当然配置的关键字还有很多,我就不一一介绍了,如果有兴趣可以查看Spring的开发手册
最后还需要在切入点处插入增强处理,这个过程的专业叫法是”织入“

<?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" xsi:schemaLocation="http://www.springframework.org/schema/beans "> <bean> </bean> <bean> <property ref="dao"></property> </bean> <bean></bean> <aop:config> <!--定义一个切入点表达式,并命名为“pointcut”--> <aop:pointcut expression="execution(public void addNewUser(entity.User))"/> <!--引用包含增强方法的Bean--> <aop:aspect ref="theLogger"> <!--将before()方法定义为前置增强并引用pointcut切入点--> <aop:before method="before" pointcut-ref="pointcut"></aop:before> <!--将afterReturning()方法定义为后置增强并引用pointcut切入点--> <aop:after-returning method="afterReturning" pointcut-ref="pointcut" returning="result"></aop:after-returning> </aop:aspect> </aop:config> </beans>

编写测试

ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); UserService service= (UserService) context.getBean("service"); User user =new User(); service.addNewUser(null);

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygxfy.html