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("");
}
}