成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

踩坑:Spring靜態(tài)變量/構造函數注入失敗(注入為null)問題的解決方案

cpupro / 2998人閱讀

摘要:案例對靜態(tài)變量的注入為空案例代碼如下錯誤案例這種方式是不能給靜態(tài)變量注入屬性值的解決方案一注解加在方法上面解決方案二注解因為注解修飾的方法加在順序在構造方法之后靜態(tài)變量賦值之前,所

1、案例1:Spring對靜態(tài)變量的注入為空

案例代碼如下:

@Componentpublic class HelloWorld {   /**    * 錯誤案例:這種方式是不能給靜態(tài)變量注入屬性值的    */    @Value("${hello.world}")    public static String HELLO_WORLD;}

解決方案一:@Value注解加在setter方法上面

@Componentpublic class HelloWorld {    public static String HELLO_WORLD;        @Value("${hello.world}")    public void setHELLO_WORLD(String HELLO_WORLD) {        this.HELLO_WORLD = HELLO_WORLD;    } }

解決方案二:@PostConstruct注解

因為@PostConstruct注解修飾的方法加在順序在構造方法之后靜態(tài)變量賦值之前,所以可以通過該注解解決靜態(tài)變量屬性值注入失敗問題:

@Componentpublic class HelloWorld {    public static String HELLO_WORLD;      @Value("${hello.world}")    public static String helloWorld;        @PostConstruct    public void init(){        // 為靜態(tài)變量賦值(值為從Spring IOC容器中獲取的hello.world字段值)        HELLO_WORLD = this.helloWorld;    } }

2、案例2:在構造函數中使用Spring容器中的Bean對象,得到的結果為空

業(yè)務場景假設:

eg:我需要在一個類(HelloWorld)被加載的時候,調用service層的接口(UserService)去執(zhí)行一個方法(sayHello),有些同學可能會在構造函數中通過調用UserService的sayHello()去實現這個需求,但是這會導致一些錯誤異常,請看下面的示例。

錯誤演示代碼如下:

@Componentpublic class HelloWorld {        /**    * UserService注入    */    @Autowired    private UserService userService;    public HelloWorld(){       // 這里會報空指針異常:因為 userService 的屬性注入是在無參數構造函數之后,如果這里直接使用 userService ,此時該屬性值為null,一個為null的成員變量調用sayHello()方法,NullPointException 異常是情理之中呀!       userService.sayHello("hello tiandai!");    }}

解決方案:@PostConstruct注解

由于@PostConstruct注解修飾的方法其生命周期位于構造方法調用之后,在Spring屬性值注入之前,所以,該注解可以很好的解決這個業(yè)務需求,代碼如下:

@Componentpublic class HelloWorld {        /**    * UserService注入    */    @Autowired    private UserService userService;    public HelloWorld(){    }      @PostConstruct    public void init(){       userService.sayHello("hello tiandai!");    } }

關于這一部分問題,還有一些奇奇怪怪的用法,參考文章:https://blog.csdn.net/dream19990329/article/details/106274283

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://www.hztianpu.com/yun/124768.html

相關文章

  • Spring入門看這一篇就夠了

    摘要:甲乙交易活動不需要雙方見面,避免了雙方的互不信任造成交易失敗的問題。這就是的核心思想。統(tǒng)一配置,便于修改。帶參數的構造函數創(chuàng)建對象首先,就要提供帶參數的構造函數接下來,關鍵是怎么配置文件了。 前言 前面已經學習了Struts2和Hibernate框架了。接下來學習的是Spring框架...本博文主要是引入Spring框架... Spring介紹 Spring誕生: 創(chuàng)建Spring的...

    superw 評論0 收藏0
  • 神兵利器Dagger2

    摘要:方案我們手動以構造函數的方式注入依賴,將和作為參數傳入而不是在的構造函數中去顯示的創(chuàng)建。同樣我們需要在類的成員變量上加上表示自己需要為自己提供依賴類的構造函數上的也需要去掉,應為現在不需要通過構造函數上的來提供依賴了。 Dagger-匕首,鼎鼎大名的Square公司旗下又一把利刃(沒錯!還有一把黃油刀,喚作ButterKnife);故此給本篇取名神兵利器Dagger2。 Dagger2...

    _DangJin 評論0 收藏0
  • spring實現靜態(tài)注入(類或者屬性)

    摘要:實現靜態(tài)注入類或者屬性場景是工具類一般都是靜態(tài)方法,靜態(tài)方法只能訪問靜態(tài)屬性。所以,我們需要靜態(tài)注入類或者屬性。常規(guī)操作注入類或者方法這樣,我們就把容器里的類和里的值注進去了。 [spring實現靜態(tài)注入(類或者屬性)]() 場景是:工具類一般都是靜態(tài)方法,靜態(tài)方法只能訪問靜態(tài)屬性。所以,我們需要靜態(tài)注入類或者屬性。 常規(guī)操作: 注入類或者方法: @Autowired private ...

    468122151 評論0 收藏0
  • Spring詳解3.Bean裝配

    摘要:的依賴關系,根據依賴關系配置完成之間的裝配。的行為信息,如生命周期范圍及生命周期各過程的回調函數。使用該種裝配模式時,優(yōu)先匹配參數最多的構造函數。如果提供了默認的構造函數,則采用否則采用進行自動裝配。 點擊進入我的博客 1 Spring容器與Bean配置信息 Bean配置信息 Bean配置信息是Bean的元數據信息,它由一下4個方面組成: Bean的實現類 Bean的屬性信息,如數...

    endiat 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<