最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳談spring中bean注入無效和new創(chuàng)建對象的區(qū)別

 更新時間:2022年02月25日 10:13:33   作者:公眾號:程序員與王子喵?歡迎關注  
這篇文章主要介紹了spring中bean注入無效和new創(chuàng)建對象的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

bean注入無效和new創(chuàng)建對象區(qū)別

注意!如果直接new的話,類里面的autowire將不生效

項目中用到如下代碼

然后 在運行的時候發(fā)現 通過 @Autowired注入的對象 capitalDetailDOMapper和 excelRecordDOMapper的值為null

public class ExcelListener extends AnalysisEventListener<List> {
@Autowired
private CapitalDetailDOMapper capitalDetailDOMapper;
@Autowired
private ExcelRecordDOMapper excelRecordDOMapper;
…
}

剛開始以為是ExcelListener沒有加bean掃描注解導致的

于是加上后

@Component
public class ExcelListener extends AnalysisEventListener<List> {
@Autowired
private CapitalDetailDOMapper capitalDetailDOMapper;
@Autowired
private ExcelRecordDOMapper excelRecordDOMapper;
…
}

結果在運行的時候,兩個mapper,仍然為null。

檢查代碼發(fā)現

在ExcelListener這個類的使用場景中,是 ExcelListener excelListener= new ExcelListener(); 創(chuàng)建的對象

這里就明白了, 手動通過new創(chuàng)建和通過spring容器創(chuàng)建管理對象是不一樣的,手動new的對象,內部用@autowire注解是無效的。

若讓該autowire生效,則需要通過容器來管理對象

改造如下,先給ExcelListener加上注解@Component

@Scope(“prototype”)
@Component(“excelListener”)
public class ExcelListener extends AnalysisEventListener<List> {
@Autowired
private CapitalDetailDOMapper capitalDetailDOMapper;
@Autowired
private ExcelRecordDOMapper excelRecordDOMapper;
…
}

這樣 這個bean就會被加載到spring容器中,這里Scope表示bean的作用范圍,spring默認創(chuàng)建的對象是單例的

prototype是非單例,這里我主要是想在不同的線程里面創(chuàng)建不同的ExcelListener實例。

可以通過容器獲取bean,也可以直接@autowire

ExcelListener excelListener= SpringBeanUtils.getBean(“excelListener”);

其中SpringBeanUtils為實現了BeanFactoryPostProcessor接口的實現類

能夠從spring容器里面獲取到bean的實例,如果bean是非單例的 每次則獲取到是一個新的bean

@Component
@Getter
public class SpringBeanUtils implements BeanFactoryPostProcessor {
private static ConfigurableListableBeanFactory beanFactory;
public static T getBean(String beanName) {
return (T) beanFactory.getBean(beanName);
}
public static T getBean(Class beanClz) {
return beanFactory.getBean(beanClz);
}
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
SpringBeanUtils.beanFactory = beanFactory;
}
}

注意??!如果A類是單例的,那么A類中的成員B類聲明為非單例的,也是無效的。

因為只有A類的一個實例,里面包含的B類的實例也只有一個。 除非能再次創(chuàng)建A類的實例,才能創(chuàng)建出另一個B類的實例對象。

bean交個spring和new比較區(qū)別

在spring的配置文件中我們要使用DataSource這個對吧

這個bean將會被多個bean引用   通過ref="dateSource"這個引用  當我們要修改這個只要修改引用就好了  不需要修改很多了  

主要是解耦

比如你有一個A類 在好幾個類里邊要調用到A的方法 new的話就要在每個類里都new A()

spring的話 只要配置一個bean進行注入就夠了。

哪天你不用A類了 改成B了~ 直接把bean里邊的class改成B就搞定了

如果用new的話 要改好幾個地方~

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring Boot如何使用EhCache演示

    Spring Boot如何使用EhCache演示

    這篇文章主要介紹了Spring Boot如何使用EhCache演示,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java使用Swing實現一個模擬電腦計算器

    Java使用Swing實現一個模擬電腦計算器

    Java Swing 是一個用于創(chuàng)建 Java GUI(圖形用戶界面)的框架,它提供了一系列的 GUI 組件和工具,可以用于創(chuàng)建桌面應用程序,包括按鈕、文本框、標簽、表格等等,本文給大家介紹了Java使用Swing實現一個模擬計算器,感興趣的同學可以自己動手嘗試一下
    2024-05-05
  • 教你創(chuàng)建springcloud微服務的基礎子服務的超詳細過程

    教你創(chuàng)建springcloud微服務的基礎子服務的超詳細過程

    這篇文章主要介紹了創(chuàng)建springcloud微服務的基礎子服務,主要是創(chuàng)建兩個springboot服務,在教程中增加springcloud相關組件,本文分步驟給大家介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Springboot jpa @Column命名大小寫問題及解決

    Springboot jpa @Column命名大小寫問題及解決

    這篇文章主要介紹了Springboot jpa @Column命名大小寫問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 基于java實現簡單的圖片類別識別

    基于java實現簡單的圖片類別識別

    這篇文章主要為大家詳細介紹了如何基于java實現簡單的圖片類別識別功能,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • Java swing實現的計算器功能完整實例

    Java swing實現的計算器功能完整實例

    這篇文章主要介紹了Java swing實現的計算器功能,結合完整實例形式分析了java基于swing組件實現計算器布局與運算功能的具體操作技巧,需要的朋友可以參考下
    2017-12-12
  • Java?Spring?boot?配置JDK和MAVEN開發(fā)環(huán)境的過程

    Java?Spring?boot?配置JDK和MAVEN開發(fā)環(huán)境的過程

    本文詳細介紹了如何配置JDK和Maven環(huán)境,包括JDK的安裝與環(huán)境變量設置,Maven的下載、配置環(huán)境變量和設置阿里云倉庫,最后簡述了在IntelliJ?IDEA中配置JDK和Maven的步驟,本教程適合Java開發(fā)新手進行開發(fā)環(huán)境的搭建,確保順利進行Java項目的開發(fā)
    2024-11-11
  • 2020 IDEA安裝教程與激活(idea2020激活碼)

    2020 IDEA安裝教程與激活(idea2020激活碼)

    這篇文章主要介紹了2020 IDEA安裝教程與激活(idea2020激活碼),本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • SpringBoot中的@EnableConfigurationProperties注解詳細解析

    SpringBoot中的@EnableConfigurationProperties注解詳細解析

    這篇文章主要介紹了SpringBoot中的@EnableConfigurationProperties注解詳細解析,如果一個配置類只配置@ConfigurationProperties注解,而沒有使用@Component或者實現了@Component的其他注解,那么在IOC容器中是獲取不到properties 配置文件轉化的bean,需要的朋友可以參考下
    2024-01-01
  • 五分鐘帶你了解Java的接口數據校驗

    五分鐘帶你了解Java的接口數據校驗

    這篇文章主要介紹了五分鐘帶你了解Java的接口數據校驗,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論

竹山县| 上虞市| 天气| 平凉市| 缙云县| 商河县| 泌阳县| 镶黄旗| 辉县市| 中西区| 宣汉县| 临猗县| 祁阳县| 定结县| 老河口市| 科尔| 沙坪坝区| 新和县| 日照市| 会理县| 万山特区| 静乐县| 汤原县| 句容市| 进贤县| 漳州市| 嵊泗县| 育儿| 镇康县| 吴川市| 小金县| 班玛县| 南充市| 开远市| 闻喜县| 佛教| 平邑县| 双辽市| 拉萨市| 枣强县| 哈尔滨市|