如何每次都取最新的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 即可

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐