没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Proxy实现实现AOP切面编程案例切面编程案例
主要介绍了Proxy实现AOP切面编程案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看
吧
通过通过JDK的的Proxy代理实现对业务类做简单的代理实现对业务类做简单的AOP实现实现
接口:UserService 包含的方法为切入点,会被代理拦截
类:UserServiceImpl 实现UserService接口
类:UserServiceFactory 工厂模式生成动态代理
类:MyAspect 切面类,实现对切入点的操作
UserService
public interface UserService {
//切面: 需要被拦截的方法
public void addUser();
public void updateUser();
public int deleteUser(int id);
}
UserServiceImpl
public class UserServiceImpl implements UserService {
public void add() {
System.out.println("UserServiceImpl.add()");
}
public void add(User user) {
System.out.println("UserServiceImpl.add(" + user + ")");
}
//下面继承自UserService接口的方法会被拦截
@Override
public void addUser() {
System.out.println("UserServiceImpl.addUser()");
}
@Override
public void updateUser() {
System.out.println("UserServiceImpl.updateUser()");
}
@Override
public int deleteUser(int id) {
System.out.println("UserServiceImpl.deleteUser(" + id + ")");
return 1;
}
}
UserServiceFactory
public class UserServiceFactory {
public static UserService createUserService() {
//1、创建目标对象target
final UserService userService = new UserServiceImpl();
//2、声明切面类对象
final MyAspect myAspect = new MyAspect();
//3、将切面类before()与after()方法应用到目标类
//3.1、创建JDK代理(返回一个接口)
/*
newProxyInstance(
ClassLoader loader, //类加载器,写当前类
Class<?>[] interfaces, //接口,接口中包含的方法执行时会被拦截
InvocationHandler h) //处理 调用切面类中的处理如:deforre()、after()
*/
UserService serviceProxy = (UserService) Proxy.newProxyInstance(
UserServiceFactory.class.getClassLoader(),
userService.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//开启事务
myAspect.before();
资源评论
夏影影
- 粉丝: 319
- 资源: 914
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功