Spring不能注入Static變數的原因及Spring注入靜態變數_java

來源:互聯網
上載者:User

下面給大家介紹spring不能注入static變數的原因,具體詳情如下所示:

Spring 依賴注入 是依賴 set方法

set方法是 是普通的對象方法

static變數是類的屬性

 @Autowired  private static JdbcTemplate jdbcTemplate;

單純看這個注入過程是沒有報錯的,但是在接下來的jdbcTemplate.query()會報null 指標錯誤.

ps:Spring注入靜態變數

今天碰到一個問題,我的一個工具類提供了幾種靜態方法,靜態方法需要另外一個類的執行個體提供處理,因此就寫出了這樣的代碼:

 Class Util{  private static XXX xxx;  xxx = BeanUtil.getBean("xxx");  public static void method(){    xxx.func();   }  public static void method(){    xxx.func();  }    }

  這裡是使用的getBean的方式,獲得XXX的執行個體,但是別人說這個方法不好,想要注入的方式。

  但是靜態XXX如何注入呢?

  上網查了很多的說法,其實很簡單:

 Class Util{  private static XXX xxx;  public void setXxx(XXX xxx){    this.xxx = xxx;  }  public void getXxx(){    return xxx;  }  public static void method1(){    xxx.func1();   }  public static void method2(){    xxx.func2();  }   }

  在xml中正常配置注入就可以了。

<bean value="test" class="x.x.x.Util">  <property value="xxx" ref="xxx"/></bean>

  這裡要注意,自動產生的getter和setter方法,會帶有static的限定符,需要去掉,才可以。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.