摘要:
循环依赖:两个或两个以上的bean循环引用。例如:A依赖B,B依赖A。 Spring有三种循环依赖问题: (1)构造器的循环依赖:Spring无法解决构造器的循环依赖问题,但是可以使用@Lazy将bean声明为懒加载,什么时候用到这个bean在创建。 (2)非单例bean的setter循环依赖:Sp 阅读全文
摘要:
首先通过BeanDefinition类获取bean的定义信息,例如:是否为单例bean、是否为懒加载等信息。 (1)调用类的构造器实例化bean。 (2)依赖注入。比如setter注入,像平时开发用的@Autowire就是这一步完成的。 (3)如果该类实现了一些Aware接口,则调用这些Aware接 阅读全文
摘要:
(1)Singleton:单例bean。 (2)prototype:多例bean。每次请求都会创建一个bean。 (3)request:每次http请求都会创建一个bean,该bean仅在当前http request内有效。 (4)session:在一个HTTP Session中,一个Bean定义对 阅读全文
摘要:
(1)方法没有用public修饰会导致事务失效。 解决方法:在方法上使用public修饰。 (2)使用try-catch捕获异常没有抛出异常,而是由方法自己处理会导致事务失效。 解决方法:处理了异常记得抛出。 (3)方法抛出检查异常会导致事务失效,报错也会导致事务失效。 解决方法:在@transac 阅读全文
摘要:
SpringIOC和SpringAOP是Spring的两个核心组件。 SpringIOC:SpringIOC是一个管理bean的容器,能够帮我们管理bean的整个生命周期,在没有SpringIOC的时候,我们需要自己手动的管理bean以及bean的依赖关系,这样会增加耦合,而有了SpringIOC, 阅读全文
摘要:
Spring并没有对单例bean作线程安全的处理,在并发条件下Spring的bean是否是线程安全的有如下两种情况: (1)无状态的bean:没有数据存储能力,例如service类和dao类都是无状态的bean,所以是线程安全的。 (2)有状态的bean:有数据存储能力,在并发环境下会发生线程安全问 阅读全文