1、AOP简介
1、面向切面编程
1、AOP介绍
Aspect-Oriented Programming:面向接口编程是OOP(Object-Oriented Programming)的一个补充
2、AOP好处:
1、降低模块耦合度
2、使系统容易扩展
3、更好的代码复用性
2、SpringAOP开发
(1)JDK动态代理
创建代理类:ObjectProxy
实现代理方法和创建代理对象方法
invoke参数:Proxy 要代理的对象
method 代理对象的方法
args 参数列表
public class ObjeProxy implements InvocationHandler{
private Object target;
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(method.getName() + "被執行, 參數如下:");
for(Object arg : args) {
System.out.println("參數:" + arg );
}
return method.invoke(target, args);
}
public Object createProxy(Object target) {
this.target = target;
return Proxy.newProxyInstance(this.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
}
(2)测试
创建bank接口:
package springboot.aop.proxy;
import java.math.BigDecimal;
public interface BankService {
public void transfer(String target, String source, BigDecimal money);
}
bank实现类:
package springboot.aop.proxy;
import java.math.BigDecimal;
public class BankServiceImpl implements BankService{
public void transfer(String target, String source, BigDecimal money) {
// System.out.println(source + "向" + target + "轉賬:" + money);
}
}
代理bank:
public static void main(String[] args) {
BankService bs = new BankServiceImpl();
BankService bsProxy = (BankService) new ObjeProxy().createProxy(bs);
bsProxy.transfer("張三", "Lisi", new BigDecimal("0.3"));
}
注意事项:
1、代理一定是代理接口,传入参数是接口实现类对象