现在的位置: 首页 > 综合 > 正文

代理

2015年07月25日 ⁄ 综合 ⁄ 共 1690字 ⁄ 字号 评论关闭

创建一个UserServiceTest.java

    @Test
    public void textProxy(){
        UserDAO userDAO = new UserDAOImpl();
        LogInterceptor li = new LogInterceptor();
        li.setTarget(userDAO);
        //第一个表示使用的代理对象,第二个表示使用的代理接口,第三个表示使用哪个代理  ,返回值为它的返回对象
        UserDAO userDAOProxy = (UserDAO)Proxy.newProxyInstance(userDAO.getClass().getClassLoader(), new Class[]{UserDAO.class}, li);
        userDAOProxy.save(new User());
        userDAOProxy.delete();
    }

使用LonInterceptor.java代理

package com.bxt.aop;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class LogInterceptor implements InvocationHandler{
    private Object target;
     public Object getTarget() {
        return target;
    }
    public void setTarget(Object target) {
        this.target = target;
    }
    public void beforeMethod(Method m){
         System.out.println(m.getName()+"start");
     }
    @Override
    public Object invoke(Object proxy, Method m, Object[] args)
            throws Throwable {
        beforeMethod(m);
        m.invoke(target, args);
        return null;
    }
}

接口UserDAO.java

package com.bxt.dao;
import com.bjsxt.model.User;
public interface UserDAO {
    public void save(User user);
    public void delete();
}

创建实现类 UserDAOImpl

package com.bxt.dao.impl;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.stereotype.Component;
import com.bjsxt.dao.UserDAO;
import com.bjsxt.model.User;
@Component
public class UserDAOImpl implements UserDAO {
    @PostConstruct
    public void init(){
        System.out.println("init");
    }
    public void save(User user) {
        System.out.println("user saved!");
    }
    @PreDestroy
    public void destory(){
        System.out.println("destory");
    }
    @Override
    public void delete() {
        System.out.println("user delete!");
    }
}

@PreDestroy  此注解表示第一个使用

抱歉!评论已关闭.