Spring技术内幕--AOP技术原理
2016-04-29 16:45
387 查看
ProxyFactoryBean是Spring IOC中创建AOP应用的底层方法。以它为入口学习。
ProxyFactoryBean的配置和使用:1.定义使用的通知器Advisor
2.定义ProxyFactoryBean(作为一个Bean来定义,设定proxyInterface、interfaceNames、target);
3.定义target属性,需要用AOP通知器中的切面应用来增强对象。
</bean>
ProxyFactoryBean的AOP实现需要JDK的Proxy特性,FactoryBean里获取对象,以getObject()方法作为入口。getObject方法首先对通知器链初始化,通知器链封装了一系列拦截器,这些拦截器需要从配置中读取,为代理对象的生成做好准备。在生成代理对象时,区分Singleton和Prototype两种类型。
ProxyFactoryBean的配置和使用:1.定义使用的通知器Advisor
2.定义ProxyFactoryBean(作为一个Bean来定义,设定proxyInterface、interfaceNames、target);
3.定义target属性,需要用AOP通知器中的切面应用来增强对象。
<bean id="testAdvisor" class="com.abc.TestAdvisor"/> <bean id="testAOP" class="org.springframework.aop.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>"com.test.AbcInterface"</value> </property> <pre name="code" class="java"><property name="target"> <bean class="com.abc.TestTarget"/> </property>
<property name="interceptorNames"> <list><value>testAdvisor</value></list> </property>
</bean>
ProxyFactoryBean的AOP实现需要JDK的Proxy特性,FactoryBean里获取对象,以getObject()方法作为入口。getObject方法首先对通知器链初始化,通知器链封装了一系列拦截器,这些拦截器需要从配置中读取,为代理对象的生成做好准备。在生成代理对象时,区分Singleton和Prototype两种类型。
public Object getObject() throws BeanException{ //初始化通知器链 initializeAdvisorChain(); //对Singleton和prototype类型进行区分,生成对应的proxy if(isSingleton){ return getSingletonInstance();}else{ if(this.targetName==null){ logger.warn("...");} return new PrototypeInstance();} }
相关文章推荐
- 算法收藏(stl 背包 并查集 矩阵乘法 java大数)
- myeclipse从数据库反射生成实体类和映射文件
- spring注解详解
- Java内部类的全限定名规律
- [改善Java代码] 提倡异常的封装
- [改善Java代码]使用构造函数协助描述枚举项
- 面向对象三大基本特性,五大基本原则
- Spring MVC静态资源处理
- MyEclipse 中各种 libraries 的含义
- rxJava 学习之路(二)
- Servlet & JSP - Java Web 访问资源的路径问题
- java实现批量删除用户,选中删除用户
- 使用spring mvc 4.2.x.jar ClassNotFoundException:org.springframework.web.cors.CorsConfigurationSource
- java5 CountDownLatch线程同步工具类
- Spring事务管理的5种配置方式
- javaweb项目中中文乱码
- Java Swing简单控件实例(JButton,JLabel,JMenuBar,JComboBo)
- Java中的线程池
- 自己写的代码生成器,spring+spring mvc +Hibernate
- Java回调机制解析