1、编写接口
package daili;
public interface UserService {
public void addUser();
public void updateUser();
public void deteleUser();
}
编写接口类的方法和具体实现代码
package daili;
public class UserServiceImpl implements UserService{
@Override
public void addUser() {
// TODO Auto-generated method stub
System.out.println("addUser");
}
@Override
public void updateUser() {
System.out.println("updataUser");
}
@Override
public void deteleUser() {
// TODO Auto-generated method stub
System.out.println("deteleUser");
}
}
编写代理类的方法代码
package daili;
public class MyAspect {
public void before() {
System.out.println("向前");
}
public void after() {
System.out.println("向后");
}
}
编写代理类和接口类等进行绑定
package daili;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
public class MyBeanFactory {
public static UserService createService() {
final UserService userService=new UserServiceImpl();
final MyAspect myAspect=new MyAspect();
UserService proxService=(UserService)Proxy.newProxyInstance(MyBeanFactory.class.getClassLoader(), userService.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
myAspect.before();
Object obj=method.invoke(userService, args);
myAspect.after();
return obj;
}
});
return proxService;
}
}
测试代码的结果
package daili;
import org.junit.Test;
public class TestJDK {
@Test
public void demo01() {
UserService userService= MyBeanFactory.createService();
userService.addUser();
userService.updateUser();
userService.deteleUser();
}
}
结果如下