Spring 动态代理(三)
来源:互联网 发布:易语言单机游戏源码 编辑:程序博客网 时间:2024/06/15 10:36
BeanNameAutoProxyCreator
BeanNameAutoProxyCreator可以根据bean的名字来代理对象,它是通过BeanPostProcessor实现的,在bean初始化之后代理对象。它的父类AbstractAutoProxyCreator实现了BeanPostProcessor的postProcessAfterInitialization方法,内部是使用ProxyFactory根据bean的名字和interceptorNames生成对象的代理。
举例
接口
public interface People { public void eat();}
实现类
public class Student implements People { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void eat() { System.out.println(this.getName() + " is eating"); } @Override public String toString() { return "Student{" + "name='" + name + '\'' + '}'; }}
方法拦截
public class MyMethodInterceptor implements MethodInterceptor { @Override public Object invoke(MethodInvocation methodInvocation) throws Throwable { System.out.println("--------before method interceptor---------"); Object object = methodInvocation.proceed(); System.out.println("----------after method interceptor----------"); return object; }}
配置文件
<bean id="student" class="com.lilongjiu.study.spring.aop.aposrc.Student"> <property name="name" value="zhangsan"></property> </bean> <bean id="myMethodInterceptor" class="com.lilongjiu.study.spring.aop.aposrc.MyMethodInterceptor"></bean> <bean id="myBeanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>student</value> </list> </property> <property name="interceptorNames"> <list> <value>myMethodInterceptor</value> </list> </property> </bean>
main方法
public class Demo { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml"); People people = (People) applicationContext.getBean("student"); people.eat(); }}
输出
--------before method interceptor---------zhangsan is eating----------after method interceptor----------
Spring 动态代理(一) - 代理模式
Spring 动态代理(二) - ProxyFactoryBean
Spring 动态代理(三) - BeanNameAutoProxyCreator
Spring 动态代理(四)- 动态代理核心类 - ProxyCreatorSupport
Spring 动态代理(五) - 自定义BeanTypeAutoProxyCreator
阅读全文
0 0
- Spring 动态代理(三)
- spring的AOP(三)----Cglib动态代理
- java代理(三、动态代理源码)
- 代理模式三(cglib动态代理)
- java代理(三)--cglib动态代理
- Java代理(三) JDK动态代理
- Spring动态代理(一)
- Spring 动态代理(一)
- Spring 动态代理(二)
- Spring 动态代理(五)
- Spring的代理模式(静态代理和动态代理)
- Spring的代理模式(静态代理和动态代理)
- Spring 动态代理(四)- 动态代理核心类
- Spring笔记(三)AOP前篇之动态代理
- 【spring】静态代理&&动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- spring静态代理 动态代理
- HTML的五种空格表示
- Codeforces Round #435 (Div. 2) E. Mahmoud and Ehab and the function
- 第三周项目四(2)
- eclipse 中代码突然变红变绿变黄
- 文件对象笔记(功能)
- Spring 动态代理(三)
- 有关闭包的相关知识整理
- 面试--网络--TCP的三次握手
- JAVA多线程join方法入门详解
- Java 实现 POS 打印机无驱打印
- HDU
- Java Spring Boot 服务器端断点续传功能支持 实现代码
- Servlet生命周期
- 剑指offer——48.把字符串转换成整数