spring中容器启动过程中初始化资源使用方法
?一、定義
在業(yè)務(wù)場(chǎng)景中,有時(shí)需要我們?cè)谌萜鲉?dòng)過程中加載資源,完成數(shù)據(jù)的初始化或者配置,需要在調(diào)用前加載進(jìn)spring容器過程中去,有以下一些方法來實(shí)現(xiàn)
1.定義靜態(tài)常量,隨著類的生命周期加載而提前加載。一般使用較多,這里不做說明
2.實(shí)現(xiàn)InitializingBean接口;重寫afterPropertiesSet()方法
3.實(shí)現(xiàn)CommandLineRunner接口(Spring Boot中使用);容器啟動(dòng)之后,加載實(shí)現(xiàn)類的邏輯資源,已達(dá)到完成資源初始化的任務(wù)
4.@PostConstruct;在具體Bean的實(shí)例化過程中執(zhí)行
?
?二、實(shí)現(xiàn)InitializingBean接口
重寫afterPropertiesSet()方法,來完成資源的初始化
1.InitializingBean接口
InitializingBean接口為bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是繼承該接口的類,在初始化bean的時(shí)候都會(huì)執(zhí)行該方法。
2.使用方法
1)編寫一個(gè)類引用InitializingBean接口,重寫其中的afterPropertiesSet方法,在其中寫自己的方法
使用注解@Component或者自己在spring配置文件中裝配bean來注入spring容器
可以看到在項(xiàng)目啟動(dòng)過程中就已經(jīng)執(zhí)行了TestComponent類中重寫的afterPropertiesSet方法
?
三、Spring boot中實(shí)現(xiàn)CommandLineRunner接口
1.Java 文件中配置實(shí)現(xiàn)CommandLineRunner接口,重寫run方法
@Component @Slf4j public class ExampleCommandLineRunner implements CommandLineRunner {@Autowiredprivate JedisClusterClient jedisClusterClient;@Autowiredprivate UserMapper userMapper;@Overridepublic void run(String... args) throws Exception {User user=userMapper.selectByPrimaryKey(1);jedisClusterClient.set("test:user",user.toString());log.info("測(cè)試CommandLineRunner初始化加載接口:加載一個(gè)user_id=1的用戶=[{}]",user,toString());} }?2.執(zhí)行結(jié)果
在啟動(dòng)spring過程中加載進(jìn)來
3.@Order排序
可以使用注解@Order注解,如果想要對(duì)加載資源的順序進(jìn)行排序
4.結(jié)果如下所示:
可以看到:ExampleCommandLineRunner類中的run方法在ExampleCommandLineRunner2的run方法之后執(zhí)行,因?yàn)槎x的@Order(value)順序原因,value越小,優(yōu)先級(jí)越高,注意最小是1,不能低于這個(gè),否則會(huì)報(bào)錯(cuò)
?
?四、@PostConstruct注解
用于方法上,@PostConstruct注解的方法,會(huì)在構(gòu)造方法之后執(zhí)行。加載順序?yàn)?#xff1a;Constructor > @Autowired > @PostConstruct > 靜態(tài)方法,但要注意以下使用方法
特點(diǎn):
- 只有一個(gè)非靜態(tài)方法能使用此注解
- 被注解的方法不得有任何參數(shù)
- 被注解的方法返回值必須為void
- 被注解方法不得拋出已檢查異常
- 此方法只會(huì)被執(zhí)行一次
結(jié)果展示:
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的spring中容器启动过程中初始化资源使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zk宕机掉与客户端连接过程记录
- 下一篇: git常用命令操作