亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot中單例類實(shí)現(xiàn)對(duì)象的注入方式

瀏覽:75日期:2023-06-27 17:11:07
Spring Boot 單例類實(shí)現(xiàn)對(duì)象的注入1、最近接手了一個(gè)項(xiàng)目

項(xiàng)目用的是SpringBoot,但其中有個(gè)類用的是單例,為了不改變單例,且還需要引入Spring管理的Bean對(duì)象

2、對(duì)于一個(gè)單例類按照平時(shí)的注解方式添加

啟動(dòng)時(shí)會(huì)報(bào)空指針異常,因?yàn)閟tatic類對(duì)象是創(chuàng)建對(duì)象后,內(nèi)存中還沒有注入Bean信息,且無法初始化Bean實(shí)例,這里的解決辦法是利用@PostConstruct來對(duì)單例類中對(duì)象的注入

@Componentpublic class MesssageHandle implements IMessageHandler { private final static Logger logger = LoggerFactory.getLogger(MesssageHandle.class); private static MesssageHandle instance = new MesssageHandle(); @Autowired private ScheduleService scheduleService; private MesssageHandle(){ } public static MesssageHandle getInstance() { return instance; } @PostConstruct public void init(){ instance = this; instance.scheduleService = this.scheduleService; }spring boot的對(duì)象注入1、需求

現(xiàn)在我們的項(xiàng)目中需要引入一個(gè)java類庫,我想要很方便的使用該類庫中的一個(gè)類,并且我想要?jiǎng)?chuàng)建這個(gè)類的一個(gè)單例對(duì)象。然后可以很方便的在各個(gè)模塊中用@AutoWired進(jìn)行對(duì)象注入。

比如一個(gè)配置文件,我在一個(gè)地方創(chuàng)建Configuration對(duì)象,讀取配置文件中的配置,然后在各個(gè)模塊中使用該對(duì)象。

2、需求分析

這個(gè)需求涉及到兩個(gè)問題

一個(gè)是單例對(duì)象的創(chuàng)建;另外一個(gè)是單例對(duì)象的引用。因?yàn)椋阋靡粋€(gè)對(duì)象,你首先得創(chuàng)建它。創(chuàng)建一個(gè)對(duì)象在Spring中有固定的模式,在定義類的時(shí)候使用@Component注解,@Component默認(rèn)是單例的。這樣spring framework在進(jìn)行component scan的時(shí)候就會(huì)創(chuàng)建這個(gè)對(duì)象。用的時(shí)候很簡單,只需要@Autowired就可以了。

@Autowired最好使用構(gòu)造器注入,也就是說,不是直接將@Autowired放在成員變量上面,而是放在構(gòu)建函數(shù)上面,然后通過構(gòu)造函數(shù)的參數(shù)注入。為何要這么麻煩?

3、Spring boot是對(duì)spring使用的簡化

所以這整個(gè)的過程也是Spring boot所具備的能力。

4、以上分析的是自己創(chuàng)建的類對(duì)象注入

現(xiàn)在如果用這種對(duì)象注入來使用成熟的包中的對(duì)象呢?

4.1 使用配置文件生成bean

<bean class='xxx'></bean>

4.2 使用@Configuration注解生成bean

@Configurationpublic class AppConfig { @Bean(name = 'timedCache') public TimedCache<String, Muser> listStrBean() {return new TimedCache<String, Muser>(30 * 6000); } }5 各個(gè)常用的注解

5.1 dao

@Repository

5.2 model

不需要注解

5.3 restful的controller

@RestController

5.4 service

service接口處不用,在接口的實(shí)現(xiàn)類處用@Service

6 關(guān)于@Autowired

要用到另外一個(gè)類的對(duì)象時(shí),首先定義一個(gè)引用。

然后在本類的構(gòu)造函數(shù)中給該引用賦值,然后將@Autowired來注解這個(gè)構(gòu)造函數(shù)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 欧美特黄高清免费观看的 | 日韩国产午夜一区二区三区 | 久久国产精品亚洲 | 久久semm亚洲国产 | 99久久久国产精品免费播放器 | 久久看精品 | 国产成人免费观看 | 中文字幕二区三区 | 国产亚洲一区二区精品 | 欧美巨大精品欧美一区二区 | 美国一级毛片片aa成人 | 日本一区二区三区免费视频 | www.av免费| 天天操夜夜噜 | 欧美成人ass | 国产欧美综合在线一区二区三区 | 97在线碰碰观看免费高清 | 成人在线免费观看网站 | 免费看一级毛片欧美 | 国产不卡精品一区二区三区 | 国产亚洲女在线精品 | 4四虎44虎www在线影院麻豆 | 波多野结衣一区在线观看 | 72种姿势欧美久久久久大黄蕉 | 久在线视频 | 精品国产杨幂在线观看福利 | 国产精品久久久久三级 | 97一级毛片全部免费播放 | 国产一区二区久久精品 | 男人又粗又硬桶女人免费 | 成人在线观看一区 | 欧美一级看片a免费观看 | 最近韩国日本免费免费版 | 美女久草 | 欧美精品束缚一区二区三区 | 另类视频区第一页 | 成人黄色在线视频 | 亚洲欧美日韩另类精品一区二区三区 | 欧美在线高清视频 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 美女很黄很黄 |