Spring AOP通过CGlib、JDK动态代理实现运行期的动态方法增强,以抽取出业务无关代码,使其不与业务代码耦合,从而降低系统耦合性,提高代码可重用性和开发效率。 所以AOP广泛应用在日志记录、监控管理、性能统计、异常处理、权限管理、统一认证等方面。
单例Bean如何注入Prototype的Bean?
要为单例Bean注入Prototype Bean,不只是修改Scope属性。由于单例Bean在容器启动时就会完成一次性初始化。所以最简单的,把Prototype Bean设置为通过代理注入,即把proxyMode属性设为TARGET_CLASS。
比如抽象类LearnService,可认为是有状态的,如果LearnService是单例的话,那必然会OOM
实际开发时,很多人不假思索把LearnGo和LearnJava类加上 @Service,让它们成为Bean,也没有考虑到父类其实有状态:
代码语言:javascript复制@Service
@Slf4