aop示例:demo1
package com.jt.demo1.service;public interface UserService {void addUser();
}
package com.jt.demo1.service;import org.springframework.stereotype.Service;
@Service
public class UserServiceIml implements UserService{/*** 业务:要求尽可能松耦合* 分析: 1.UserService是业务处理类,其中addUser方法完成用户新增* 2.其中事务的代码与业务代码紧紧的耦合在一起* 3.如果事务的机制发生了变化,则所有的代码都将改变,耦合性高* 当前业务的耦合性太高了!!!* 4.代码复用性差*/@Overridepublic void addUser() {System.out.println("事物开始");System.out.println("新增用户陈宫!!!");System.out.println("陈宫很开心!!!");}
}
package com.fig;import t.annotation.ComponentScan;
import t.annotation.Configuration;
@Configuration
@ComponentScan("com.jt.demo1")
public class SpringConfig {
}
package com.jt.demo1.proxy;import flect.InvocationHandler;
import flect.Method;
import flect.Proxy;//当前类是工具API,目的是获取代理对象
public class JDKProxy {/**参数说明:* ClassLoader loader 类加载器,将class加载到java运行机制中* Class<?>[] interfaces 被代理者的接口数组,java可以多实现* InvocationHandler h 将代理对象扩展的内容写到处理器中* 注意事项: JDK代理必须要求 "被代理者"要么有接口(本身就是接口),要么实现接口(实现类)* @param target* @return*/public static Object getProxy(Object target){//1.获取目标对象的类加载器ClassLoader loader = Class().getClassLoader();//2.获取接口数组Class<?>[] interfaces = Class().getInterfaces();//3.获取处理器对象InvocationHandler handler = getInvocationHandler(target);//4.利用动态代理获取对象wProxyInstance(loader,interfaces,handler);}public static InvocationHandler getInvocationHandler(Object target){//当代理对象执行业务操作时,通过InvocationHandler进行业务的扩展return new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("事务开始");//调用 让目标方法执行 target:目标对象!!! 其他都是固定写法!Object result = method.invoke(target, args);System.out.println("事务提交");return result;}};}
}
package com.jt.demo1.proxy;import lib.proxy.Enhancer;
import lib.proxy.MethodInterceptor;
import lib.proxy.MethodProxy;import flect.Method;public class CglibProxy {public static Object getObject(Object target){//创建增强器对象Enhancer enhancer = new Enhancer();//设置父级enhancer.Class());enhancer.setCallback(getMethodInterceptor());ate();
本文发布于:2024-02-01 00:39:46,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671918632570.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |