静态代理(草稿)

代码

MailService

public interface MailService {
    boolean sendMail(String msg);
}

MailServiceImpl

@Service
public class MailServiceImpl implements MailService {
    @Override
    public boolean sendMail(String msg) {
        // OCP(开闭原则-->对扩展开放,对修改关闭)

        System.out.println("send->" + msg);

        return true;
    }


}


//自己动手写子类重写父类方法,进行功能扩展 ==> cglib代理规则
class TimeMailServiceImpl1 extends MailServiceImpl {//cglib

    @Override
    public boolean sendMail(String msg) {
        // OCP(开闭原则-->对扩展开放,对修改关闭)
        long t1 = System.currentTimeMillis();

        boolean flag = super.sendMail(msg);

        long t2 = System.currentTimeMillis();
        System.out.println("send time:" + (t2 - t1));

        return flag;
    }
}


//自己写兄弟类对目标对象(兄弟类)进行功能扩展,这种方式又叫组合  ==> jdk代理规则
class TimeMailServiceImpl2 implements MailService {

    private MailService mailService;

    public TimeMailServiceImpl2(MailService mailService) {
        this.mailService = mailService;
    }

    @Override
    public boolean sendMail(String msg) {
        // OCP(开闭原则-->对扩展开放,对修改关闭)
        long t1 = System.currentTimeMillis();

        boolean flag = mailService.sendMail(msg);

        long t2 = System.currentTimeMillis();
        System.out.println("send time:" + (t2 - t1));

        return flag;
    }


}

MailServiceTests

@SpringBootTest
public class MailServiceTests {
    @Autowired
    private MailService mailService;


    //测试动态代理
    @Test
    void test2() {

        mailService.sendMail("aaa");//有切面方法

//        new MailServiceImpl().sendMail("bbb");//无切面方法

    }


    //测试静态代理
    @Test
    void test1() {
        new TimeMailServiceImpl1().sendMail("123");

        new TimeMailServiceImpl2(new MailServiceImpl()).sendMail("123");

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值