AOP的概念:
Aspect Oriented Progr amming (面向切面编程)
可配置AOP框架实现
AOP使用场景
AOP用来封装横切关注点,具体可以在下面的场景中使用:
权限
缓存
错误处理
调试
记录跟踪
持久化
同步
事务
等等。
代码示例:
通过动态代理来生成代理对象,通过反射内省获取实现对象装配
类清单
测试类
package com.aop;
import org.junit.jupiter.api.Test;
import java.io.InputStream;
public class AopDemo {
@Test
public void aopDemo(){
//读取配置文件
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/aop/bean.properties");
//装配,创建bean的对象
BeanFactory beanFactory = new BeanFactory(in);
//获取代理对象
ProxyFactoryBean proxyFactoryBean = (ProxyFactoryBean)beanFactory.getBean("bean");
IManager proxy = (IManager)proxyFactoryBean.getProxy();
proxy.add("打不死的强子");
}
}
主业务接口:
做一个添加功能
package com.aop;
public interface IManager {
public void add(String item);
}
主业务的实现类
package com.aop;
import java.util.ArrayList;
import java.util.List;
public class IManagerImpl implements IManager {
List<String> list = new ArrayList<>();
@Override
public void add(St