IUserService.java
package com.qfwh.app02;
import java.util.List;
public interface IUserService<T> {
/***
* 获取
*
*/
List<T> getAllUser();
/**
* 保存用户
*/
Boolean saveUser(T user);
/**
* 删除
*
*/
boolean deleteUser(int uid);
/**
* 跟新
*/
boolean updateUser(T obj);
}
UserServiceImpl.java
package com.qfwh.app02;
import java.util.ArrayList;
import java.util.List;
public class UsrServiceImpl<T> implements IUserService<T> {
@Override
public List<T> getAllUser() {
System.out.println("----------getAllUser--------------");
return new ArrayList<>();
}
@Override
public Boolean saveUser(T user) {
System.out.println("----------saveUser--------------");
return true;
}
@Override
public boolean deleteUser(int uid) {
System.out.println("----------deleteUser--------------");
return false;
}
@Override
public boolean updateUser(T obj) {
System.out.println("----------updateUser--------------");
return true;
}
}
Myaspect.java
package com.qfwh.app02;
public class MyAspect {
public void before(){ System.out.println("***************before*************"); }
public void after(){ System.out.println("***************after*************"); }
}
UserFactory.java
package com.qfwh.app02;
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 UserFactory {
/**
* 使用Spring中的一个增强类来实现aop方式
* 1. 创建Enhancer对象
* 2. 设置增强类Enhancer的superClass
* 3. 设置Enhancer对象的回调
* 4. 通过eh对象的create()方法来得到指定的对象
* @return
*/
public static IUserService getUserService(){
// 1. 创建Enhancer对象
Enhancer eh = new Enhancer();
// 2. 设置增强类Enhancer的superClass
eh.setSuperclass(IUserService.class);
IUserService<Object> us = new UsrServiceImpl<>();
MyAspect ms = new MyAspect();
// 3. 设置Enhancer对象的回调
eh.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
ms.before();
Object obj = method.invoke(us,objects);
ms.after();
return obj;
}
});
// 4. 通过eh对象的create()方法来得到指定的对象
IUserService<Object> ius =(IUserService<Object>) eh.create();
return ius;
}
}
testAPP02.java
import com.qfwh.app02.IUserService;
import com.qfwh.app02.UserFactory;
import com.qfwh.app02.UsrServiceImpl;
import org.junit.Test;
public class testAPP02 {
@Test
public void test(){
IUserService<Object> us = new UsrServiceImpl<>();
Object O = new Object();
System.out.println(us.getAllUser());
System.out.println(us.saveUser(O));
System.out.println(us.deleteUser(1));
System.out.println(us.updateUser(O));
System.out.println("===================================");
IUserService ius = UserFactory.getUserService();
System.out.println(ius.getAllUser());
System.out.println(ius.saveUser(O));
System.out.println(ius.deleteUser(1));
System.out.println(ius.updateUser(O));
}
}
运行结果: