cglib第三方代理



不用接口,直接写类

//拦截对象

    public class UserDao {
        public void saveUser(){

System.out.println(“saveUser”);

        }

        public void updateUser(){

System.out.println(“updateUser”);

        }
    }

//后置增强

    public class AfterAdvice implements AfterReturningAdvice {

@Override

        public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable {

System.out.println(“日志保存”);

        }
    }

//测试类

    public class test {
        public static void main(String[] args) {
            ApplicationContext context=new ClassPathXmlApplicationContext("springAOP/springAopCglib/bean.xml");

UserDao userDao=context.getBean(“userProxy”,UserDao.class);

userDao.saveUser();

        }
    }

//增强(拦截所有的强求)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd" >

        <bean id="userDao" class="springAOP.springAopCglib.UserDao"></bean>
        <bean id="after" class="springAOP.springAopCglib.AfterAdvice"></bean>

        <!--cglib动态代理-->
        <bean id="userProxy" class="org.springframework.aop.framework.ProxyFactoryBean"
              p:target-ref="userDao"
              p:interceptorNames="after"
              p:proxyTargetClass="true"

/>

    </beans>

//通知指定函数拦截

    <bean id="userDao" class="springAOP.springAopCglib.UserDao"></bean>
    <bean id="after" class="springAOP.springAopCglib.AfterAdvice"></bean>

    <!--通知-->
    <bean id="user" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="advice" ref="after"></property>
        <property name="patterns">
            <property name="advice" ref="after"></property>
                <property name="patterns">
                    <list>
                        <value>.*save.*</value>
                    </list>
                </property>
        </property>
    </bean>

    <!--cglib动态代理-->
    <bean id="userProxy" class="org.springframework.aop.framework.ProxyFactoryBean"
          p:target-ref="userDao"
          p:interceptorNames="user"
          p:proxyTargetClass="true"

/>