spring是一个技术体系,之前说过spring的ioc,学习底层的意义,为的是以后灵活进行定制的时候,学的底层知识就可以用了。之前我记得在开发的时候,log日志都是debug,到线上的时候为了不影响性能就改成info,但是如果是线上出问题了,需要关闭项目更改为debug,查看到底是怎么回事,其实如果学习了aop,里面有个开关的功能,可以动态的不更改项目状态的情况下,动态的让日志级别发生改变,灵活的追踪项目里面的存在的问题。
当需要批量的定义程序逻辑,批量更改程序的时候,其实里面有很多坑,会让程序本身很复杂。有些人喜欢在AOP里面增加缓存,带来便利的同时也带来了复杂性。当代码变的扩展性强的时候,复杂性也变的非常强了。尤其是新手,慎重选择,尤其是负责性和扩展性上,做好真别。别让方案过于复杂。要用简单的方案实现复杂的问题,而不是是复杂的方案实现简单的问题。开发多年的领悟。
切入的具体逻辑载体。
描述了aop具体包括哪些通知,具体切入到哪些方法。
目标对象代理实现。
流程梳理:首先会写一个aop拦截的逻辑组件,到底要拦截什么,具体的业务是什么,由AOP定义组件告诉我具体有哪些通知和拦截的组件,把它插入到哪些方法里面。具体的哪些方法执行是通过调用执行组件。由其他里面的aopbeanfactroy生成对应的aopproxy,用户拿到的就是业务服务类,达到的目的就是透明化。透明化的含义就是对用户来说调用者来说不需要关心这些,通过代理的方式把中间的方式不展示给用户来,就是透明化。AOP说实在的要不IOC复杂的很多。
PS:AOP目前我用到的几个场景,就是日志管理,事务控制,权限管理 等几个。