Bean 生命周期和作用域 - JavaWeb 入门开发教程

返回介绍

Bean 生命周期和作用域

发布于 2019-06-30 字数 1423 浏览 1005 评论 0

前面的内容中我们看到,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();
    }
}

上一篇:Java Config

下一篇:Autowiring Candidate

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!