0%

Spring小技巧

前言

这里简单记录一下学习Spring全家桶的小知识点,可能会比较零碎。

内容

1、 对于Spring容器来说,当一个Bean@Component标记后,它就会自动为我们创建ige单例(Singleton),即容器初始化时创建Bean,容器关闭前销毁Bean。在容器运行期间,我们调用getBean(Class)获取到的Bean总是同一个实例。
还有一种Bean,我们每次调用getBean(Class),容器都返回一个新的实例,这种Bean称为Prototype(原型),它的生命周期显然和Singleton不同。声明一个PrototypeBean时,需要添加一个额外的@Scope注解:

1
2
3
4
5
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) // @Scope("prototype")
public class MailSession {
...
}

2、但一个第三方Bean不在package管理之内,例如ZoneId,该如何创建它?
答案是我们自己在@Configuration类中编写一个Java方法创建并返回它,注意给方法标记一个@Bean注解:

1
2
3
4
5
6
7
8
9
@Configuration
@ComponentScan
public class AppConfig {
// 创建一个Bean:
@Bean
ZoneId createZoneId() {
return ZoneId.of("Z");
}
}

Spring对标记为@Bean的方法只调用一次,因此返回的Bean仍然是单例。

-------------------本文结束 感谢阅读-------------------