什么是代理模式?
代理模式不是一种技术,而是一种设计思想,代理模式是一种通过代理来实现真实目的的一种设计思想。
什么意思?比如说,我要查看公司某人的工资,但是又不能直接查看,需要经过记录日志、权限校验、安全性检查等一系列的步骤,才可以查看工资,但是我们的目标只有一个:查看工资,其他操作就交给代理来做,从编码意义来说通过这样的方式能够减少业务层面的代码量,有效的将实现方法与调用方法分离,实现解耦,把业务层实现得更加纯粹。
面向切面编程和代理模式这两种编程思想有什么关系?
代理模式是AOP的设计原理。面向切面编程就是:定义一个切面,在切面的纵向定义处理方法,处理完以后,再回到横向业务流。
代理模式又分为:
静态代理和动态代理。
静态代理就是:将接口、实现类、代理类全部设置完成,这样做不够灵活,不灵活体现在静态代理每个代理都要手动创建。
动态代理就是:灵活的实现代理,灵活体现在可以把一类代理归纳起来成一个,实现动态代理。
Spring AOP把动态代理通过配置文件就能完成代理,提高了开发效率。
Spring AOP的实现方式:1、使用spring提供的api接口实现
2、使用自定义类实现aop
3、使用注解实现aop
Spring AOP可以说是动态代理的框架,你只需要把公共业务放到一个类里面,把领域业务定义出来,然后通过Spring的配置,他就会把公共的业务放到领域业务里面去。Spring把这个过程进行了很多细分,比如:
关注点:就是实现的公共业务
切面:就是关注点的模块化,就是公共业务那个类
关注点的执行时间:包括在目标方法before,after,around等执行顺序的不同,有前置通知,后置通知,环绕通知,异常通知等
连接点:通过连接点把公共业务和领域业务进行连接,在xml里面配置