欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年08月02日 11:37:28   作者:「已注銷(xiāo)」  
這篇文章主要介紹了Spring Boot中單例類(lèi)實(shí)現(xiàn)對(duì)象的注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring Boot 單例類(lèi)實(shí)現(xiàn)對(duì)象的注入

1、最近接手了一個(gè)項(xiàng)目

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

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

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

@Component
public 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類(lèi)庫(kù),我想要很方便的使用該類(lèi)庫(kù)中的一個(gè)類(lèi),并且我想要?jiǎng)?chuàng)建這個(gè)類(lèi)的一個(gè)單例對(duì)象。然后可以很方便的在各個(gè)模塊中用@AutoWired進(jìn)行對(duì)象注入。

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

2、需求分析

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

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

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

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

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

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

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

4.1 使用配置文件生成bean

<bean class="xxx"></bean>

4.2 使用@Configuration注解生成bean

@Configuration
public 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)類(lèi)處用@Service

6 關(guān)于@Autowired

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

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis-Plus主鍵生成策略的方法

    Mybatis-Plus主鍵生成策略的方法

    本文主要介紹了Mybatis-Plus主鍵生成策略的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • idea中如何使用git進(jìn)行版本回退詳解

    idea中如何使用git進(jìn)行版本回退詳解

    工作中遇到git遠(yuǎn)程倉(cāng)庫(kù)需要回退到歷史版本的問(wèn)題,根據(jù)網(wǎng)上的搜索結(jié)果結(jié)合自己的實(shí)踐,下面這篇文章主要給大家介紹了關(guān)于idea中如何使用git進(jìn)行版本回退的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue+springboot讀取git的markdown文件并展示功能

    vue+springboot讀取git的markdown文件并展示功能

    Markdown-it 是一個(gè)用于解析和渲染 Markdown 標(biāo)記語(yǔ)言的 JavaScript 庫(kù),使用 Markdown-it,你可以將 Markdown 文本解析為 HTML 輸出,并且可以根據(jù)需要添加功能、擴(kuò)展語(yǔ)法或修改解析行為,本文介紹vue+springboot讀取git的markdown文件并展示,感興趣的朋友一起看看吧
    2024-01-01
  • 基于dubbo分組group的一些總結(jié)

    基于dubbo分組group的一些總結(jié)

    這篇文章主要介紹了關(guān)于dubbo分組group的一些總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • springBoot整合jwt實(shí)現(xiàn)token令牌認(rèn)證的示例代碼

    springBoot整合jwt實(shí)現(xiàn)token令牌認(rèn)證的示例代碼

    實(shí)施Token驗(yàn)證的方法挺多的,還有一些標(biāo)準(zhǔn)方法,比如JWT,本文主要介紹了springBoot整合jwt實(shí)現(xiàn)token令牌認(rèn)證的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • Java面試題沖刺第二十七天--JVM2

    Java面試題沖刺第二十七天--JVM2

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于JVM的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-08-08
  • spring boot上傳文件出錯(cuò)問(wèn)題如何解決

    spring boot上傳文件出錯(cuò)問(wèn)題如何解決

    這篇文章主要介紹了spring boot上傳文件出錯(cuò)問(wèn)題如何解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Spring Bean生命周期源碼原理圖解

    Spring Bean生命周期源碼原理圖解

    這篇文章主要介紹了Spring Bean生命周期源碼原理圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java導(dǎo)出Word文檔的實(shí)現(xiàn)方法詳解

    Java導(dǎo)出Word文檔的實(shí)現(xiàn)方法詳解

    這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出Word文檔的實(shí)現(xiàn)方法,在日常的開(kāi)發(fā)工作中,我們時(shí)常會(huì)遇到導(dǎo)出Word文檔報(bào)表的需求,比如公司的財(cái)務(wù)報(bào)表、醫(yī)院的患者統(tǒng)計(jì)報(bào)表、電商平臺(tái)的銷(xiāo)售報(bào)表等等,需要的朋友可以參考下
    2023-08-08
  • Java多線程三種主要實(shí)現(xiàn)方式解析

    Java多線程三種主要實(shí)現(xiàn)方式解析

    這篇文章主要介紹了Java多線程三種主要實(shí)現(xiàn)方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論