Spring的AOP实现(2)

Spring的AOP实现(2)–Enhancer

/**
* 使用Spring中的一个增强类来实现aop方式
* 1. 创建Enhancer对象
* 2. 设置增强类Enhancer的superClass
* 3. 设置Enhancer对象的回调
* 4. 通过eh对象的create()方法来得到指定的对象
* @return
*/

UserService.java

package com.qianfeng.aop02;

import java.util.List;

public interface UserService {

    List getUserList();

    boolean delete(int uid);

    boolean update(Object user);

    boolean saveUser(Object user);
}

UserServiceImpl.java

package com.qianfeng.aop02;
import java.util.List;

public class UserServiceImpl implements UserService {
    @Override
    public List getUserList() {
        System.out.println("查找用户");
        return null;
    }

    @Override
    public boolean delete(int uid) {
        System.out.println("删除用户");
        return false;
    }

    @Override
    public boolean update(Object user) {
        System.out.println("修改用户");
        return false;
    }

    @Override
    public boolean saveUser(Object user) {
        System.out.println("更新用户");
        return false;
    }
}

MyAspect.java

package com.qianfeng.aop02;

public class MyAspect {

    public void Before() {
        System.out.println("---Before---");
    }

    public void After() {
        System.out.println("---After---" + '\n' + '\n');
    }
}

UserFaction.java

package com.qianfeng.aop02;

import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

public class UserFaction {

    public static UserService getUserService(){
        UserServiceImpl service = new UserServiceImpl();
        MyAspect aspect = new MyAspect();

        Enhancer enhancer = new Enhancer();

        enhancer.setSuperclass(UserService.class);

        enhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
                aspect.Before();
                Object invoke = method.invoke(service, objects);
                aspect.After();
                return invoke;
            }
        });
        Object o = enhancer.create();
        return (UserService) o;
    }
}

Aop02Text.java

package com.qianfeng.aop02;

import com.qianfeng.aop02.UserService;
import org.junit.Test;

public class Aop02Text {

    @Test
    public void text(){
        UserService userService = UserFaction.getUserService();
        userService.delete(1);
        userService.getUserList();
        userService.saveUser("");
        userService.update("");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值