VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • java教程之JDK动态代理是通过JDK中的 java.lang.refl(2)

 2.创建切面类MyAspect

1
2
3
4
5
6
7
8
9
10
11
public class MyAspect {
 
    public void myBefore(){
        System.out.println("方法执行前");
    }
 
    public void myAfter(){
        System.out.println("方法执行后");
    }
 
}

 3.创建MyBeanFactory类,在该类中通过Proxy实现动态代理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MyBeanFactory {
 
    public static UserDao getBean(){
        // 1.准备目标类
        final UserDao userDao = new UserDaoImpl(); // 在spring中通过注入获取单例对象
        //2.创建切面类
        final MyAspect myAspect = new MyAspect();
        //3.使用代理类,进行增强
        return (UserDao)Proxy.newProxyInstance(MyBeanFactory.class.getClassLoader(),new Class[]{UserDao.class},new InvocationHandler(){
            public Object invoke(Object proxy, Method method, Object[] args) throws InvocationTargetException, IllegalAccessException {
                //增强前
                myAspect.myBefore();
                Object obj = method.invoke(userDao,args);
                //增强后
                myAspect.myAfter();
                return obj;
            }
        });
 
    }

相关教程