深入理解Spring —— Bean的更新

如何每次都取最新的Bean

在开发过程中,有没有遇到这样的问题,需要拿到的Bean 每次都是新创建的 那么如何配置Bean 来满足该需求呢?

Bean的作用域

在Spring Bean 的作用域有几种:

作用域 描述
singleton 该作用域将 bean 的定义的限制在每一个 Spring IoC 容器中的一个单一实例(默认)。
prototype 该作用域将单一 bean 的定义限制在任意数量的对象实例。
request 该作用域将 bean 的定义限制为 HTTP 请求。只在 web-aware Spring ApplicationContext 的上下文中有效。
session 该作用域将 bean 的定义限制为 HTTP 会话。 只在web-aware Spring ApplicationContext的上下文中有效。
global-session 该作用域将 bean 的定义限制为全局 HTTP 会话。只在 web-aware Spring ApplicationContext 的上下文中有效。

PS:该图参考于http://wiki.jikexueyuan.com/project/spring/bean-scopes.html
那么我们可以通过prototype 来实现我们要达到的效果

配置

@Configuration
public class TestBeanConfig {
    @Bean("testBean")
    //@Lazy
    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    public TestBean o(){
        return new TestBean();
    }
}

通过@Scope 配置为原型模式 SCOPE_PROTOTYPE 即可

你可能感兴趣的:(Spring,Boot)