43.@Bean之间的方法调用是怎么保证单例的?(@Configuration加与不加的区别是什么?)

@Bean之间的方法调用是怎么保证单例的?(@Configuration加与不加的区别是什么?)

  • 1.如果希望@bean的方法返回是对象是单例 需要在类上面加上@Configuration,
  • 2.Spring 会在invokeBeanFactoryPostProcessor 通过内置BeanFactoryPostProcessor中会CGLib生成动态代理代理
  • 3.当@Bean方法进行互调时, 则会通过CGLIB进行增强,通过调用的方法名作为bean的名称去ioc容器中获取,进而保
    证了@Bean方法的单例

扩展

1、Bean的单例和多例使用

在Spring中,bean可以被定义为两种模式:prototype(多例)和singleton(单例)

  • singleton(单例):只有一个共享的实例存在,所有对这个bean的请求都会返回这个唯一的实例。
  • prototype(多例):对这个bean的每次请求都会创建一个新的bean实例,类似于new。

Spring bean 默认是单例模式。

Spring官方文档中给出的bean的scope有五种:

  • request:当每次请求时实例化。
  • session:当在一个session周期内,对象时单例的。
  • globalSession:依赖包spring-mvc-portlet&#

你可能感兴趣的:(spring,java,intellij-idea,java-ee,spring,boot,spring,cloud,maven)