Bean 生命周期和作用域

前面的内容中我们看到,Bean 的创建是完全由 Spring Container 进行控制的,我们不需要手动进行创建对象的操作。进一步的,Bean 在 Container 的控制下,有自己的生命周期和作用域,本部分将简单介绍有关内容。

Singleton

Bean 默认的作用域是 Singleton:

@Bean
@Scope("singleton") // 默认,可以去掉
//@Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON) 另一种写法
public Person aPerson() {
    Person aPerson = new Person();
    aPerson.setName("Chester");
    return aPerson;
}

Singleton 的含义是,在 Container 内该 Bean 只会被创建一次,后续的所有对于该 Bean 的请求都会返回同一个对象。

Prototype

另一种 Bean 的作用域是 Prototype:

@Bean
@Scope("prototype")
public Person personPrototype() {
    return new Person();
}

ProtoType 的含义是,每次对于 Bean 的请求,都会创建一个新的对象。

Lifecycle Callback

Spring 允许 Bean 在创建和销毁的时候注册回调:

public class Foo {
    public void init() {
    // initialization logic
    }
}
public class Bar {
    public void cleanup() {
    // destruction logic
    }
}

@Configuration
public class AppConfig {
    @Bean(initMethod = "init")
    public Foo foo() {
        return new Foo();
    }
    @Bean(destroyMethod = "cleanup")
    public Bar bar() {
        return new Bar();
    }
}

results matching ""

    No results matching ""