浅聊spring AOP的最基本配置
?假设我们有一个Person接口和它的实现类PersonImpl,我们希望每次调用Person方法的时候,都能够额外做其他一些操作。这时我们配置如下:
?
?
<beanid="personTarget"name="code"><beanvalue="true"/></bean>
?
本配置的意思是用transactionInterceptor去拦截productOverService和ticketOverService。
?
?
因为aop的原理一样,所以aop各元素之间的装配过程也类似。无论是哪种spring的配置,所不同的只是方便性而已。凡是spring的AOP,它的底层都是JDK动态代理(代理接口)或CGLIB(代理类)。以上配置中,ProxyFactoryBean实现FactoryBean接口,这是spring预定义的一个接口,所有实现该接口的bean。它在spring容器中存储的真正对象,并不是定义时候的那个类,比如这里的ProxyFactoryBean。而是它的getObject所返回的对象,也就是说初始化person这个bean的时候,它会调用它的getObject方法,spring在这个方法里创建AOP代理。对于第二种配置,BeanNameAutoProxyCreator实现了BeanPostProcessor接口,spring在这个接口里创建AOP代理