spring代理-01

1、代理类

package wlly.spring.web.beans;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MyProxy implements InvocationHandler{
    private Object object;
    
    public Object getObject() {
        return object;
    }

    public void setObject(Object object) {
        this.object = object;
    }

    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        proxy=object;
        before();
        method.invoke(proxy, args);
        return null;
    }
    public void before() {
        Date dt = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss sss");
        String startTime = sdf.format(dt);
        System.out.println("@Before开始" + startTime);
    }

    public void after() {
        Date dt = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss sss");
        String startTime = sdf.format(dt);
        System.out.println("@After" + startTime);
    }

    public void afterReturn() {
        Date dt = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss sss");
        String startTime = sdf.format(dt);
        System.out.println("@AfterReturning返回" + startTime);
    }

    public void afterThrow() {
        Date dt = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss sss");
        String startTime = sdf.format(dt);
        System.out.println("@AfterThrowing抛出异常" + startTime);
    }


}

2、接口

package wlly.spring.web.beans;

public interface UserDAO {

    public void add();
}
 

3、实现类

package wlly.spring.web.beans;

import org.springframework.stereotype.Repository;

@Repository
public class UserDAOImpl implements UserDAO{

    public void add() {
        System.out.println("添加用户开始......");
    }

}
4、beans.xml

<?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:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

    <context:component-scan base-package="wlly.spring.web.beans" />
    <bean id="myProxy" class="wlly.spring.web.beans.MyProxy"/>
    <aop:config>
        <aop:pointcut expression="execution(public void wlly.spring.web.beans.UserDAOImpl.add())" id="sos" />
        <aop:aspect id="pro" ref="myProxy">
            <aop:before method="before" pointcut-ref="sos" />
            <aop:after method="after" pointcut-ref="sos"/>
            <aop:after-returning method="afterReturn" pointcut-ref="sos"/>
            <!--  <aop:around method="afterThrow" pointcut-ref="sos"/>  -->
        </aop:aspect>
    </aop:config>
</beans>

 

5、测试类

package wlly.spring.web.beans;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {

    public static void main(String[] args) {
        ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("/wlly/spring/web/beans/beans.xml");
        UserDAO userDAO=(UserDAO)applicationContext.getBean("userDAOImpl");
        userDAO.add();
        
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值