1. 程式人生 > >關於使用spring註解注入靜態屬性

關於使用spring註解注入靜態屬性

1. 使用場景

一般需要在一個工具類中使用@Autowired 註解注入一個service。但是由於工具類方法一般都寫成static,所以直接注入就存在問題。

2. 解決方法

  • 方法1
@Component
public class BooUtil {

    private static Foo foo;

    @Autowired
    public BooUtil(Foo foo) {
        BooUtil.foo = foo;
    }

    public static void randomMethod() {
         foo.doStuff();
    }
}
  • 方法2
@Component
public class BooUtil {

    private static Foo foo;
    @Autowired
    private Foo tFoo;

    @PostConstruct
    public void init() {
        BooUtil.foo = tFoo;
    }

    public static void randomMethod() {
         foo.doStuff();
    }
}

注意: 工具類上要加 @Component ,該類需要被spring管理注入

親測方法2,可以解決,方法1沒有測試

相關推薦

關於使用spring註解注入靜態屬性

1. 使用場景 一般需要在一個工具類中使用@Autowired 註解注入一個service。但是由於工具類方法一般都寫成static,所以直接注入就存在問題。 2. 解決方法 方法1

spring註解注入properties屬性

1 首先在applicationContext.xml中加入:    <beans xmlns:util="http://www.springframework.org/schema/util"      xsi:schemaLocation="http://www.

spring註解注入屬性

1 注入普通型別屬性 (1)在要注入值的屬性上面使用註解 @Value,不需要set方法 @Value(value="lucymary")  privateStringbname; 2 注入物件型別屬性(重點) (0)首先把物件使用註解建立 第一個註解: @Autowir

Spring如何注入靜態變數

原文地址:http://www.connorgarvey.com/blog/?p=105 Spring的架構對於靜態類和靜態方法的支援並不是很友好。Spring沒有現成的辦法來完成靜態欄位的注入,這是因為Spring根本就無法檢測到這些靜態屬性。Spring的設計者意識到這個缺點,然後提出瞭如下的解決方案:

淺談Spring依賴注入靜態成員變數

Spring的依賴注入是基於bean物件注入屬性;如果在一個類中定義了一個static修飾的成員變數,那麼這個變數就是屬於類的,無法完成依賴注入 eg: 假設在xml配置檔案已經配置了SolrTemplate物件 @Autowired private stat

spring註解注入和context:component-scan

  一、spring註解 @Service告訴spring容器,這是一個Service類,標識持久層Bean元件,預設情況會自動載入它到spring容器中。 @Autowried註解告訴spring,這個欄位需要自動注入 @Scope指定此spring bean的scope

Spring 無法注入靜態變數,直接在靜態方法中獲取bean

模組中想把一個類寫成工具類,提供靜態方法呼叫。但是方法中要用到@autowire注入的dao類變數,它要能在靜態方法中使用的話本身就加上static,但是static變數是無法用@autowire注入的。 @Autowired private AppConfMapper m

spring註解注入:詳解

spring從2.5版本開始支援註解注入,註解注入可以省去很多的xml配置工作。由於註解是寫入java程式碼中的,所以註解注入會失去一定的靈活性,我們要根據需要來選擇是否啟用註解注入。 我們首先看一個註解注入的實際例子,然後再詳細介紹context:component-scan的使用。 如果你已經在用

利用反射實現簡單的Spring註解注入例項

一時興起,這兩天看了看Spring的原始碼,就想寫一個簡單的Spring利用註解注入!!Spring的註解注入方式給了我們很方便的好處!大家應該都瞭解Spring的注入原理,在這裡寫下一個非常簡單的使用註解來注入的例項,做個小小的筆記! 要使用註解,那就絕對和反射離不開。摘

spring annotation 注入static 屬性

第一種方法: @Componentpublic class UserUtils{  private static UserAccessor userAccessor;   /**   * Sets t

Spring註解注入集合物件

目錄 1. @Autowired註解注入map、list與@Qualifier package com.imooc.beanannotation.multibean; public interface BeanInterface { } package com

Spring依賴注入 — 集合屬性配置

對於陣列、java.util.List、java.util.Set、java.util.Map等集合物件,在注入前必須填充入一些物件至集合中,然後再將集合物件注入至所需的Bean,也可以交由Spring的IoC容器來自動維護或生成集合物件,並完成依賴注入。 完整例項 public class Some

Spring註解注入

一.Spring元件掃描機制 Spring能在Classpath下自動掃描被某些註解標識的類,並把它們放到IoC容器中,作用和使用XML配置是一樣的,但是效率要高很多。 特定的元件有如下幾個(不止): 1. Autowired是自動注入,自動從spring的上下文找到合

Spring註解注入原理

Spring容器框架包org.springframework.stereotype下Controller註解介面原始碼如下:@Target({java.lang.annotation.ElementType.TYPE})@Retention(RetentionPolicy.RU

quartz如何獲取spring註解注入的bean

其實很簡單,如下: public class ExampleJob extends QuartzJobBean { @Override protected void executeInternal(JobExecutionContext con

Spring 註解注入—@Qualifier 註釋

當建立多個具有相同型別的 bean 時,並且想要用一個屬性只為它們其中的一個進行裝配,在這種情況下,你可以使用 @Qualifier 註釋和 @Autowired 註釋通過指定哪一個真正的 bean 將會被裝配來消除混亂。下面顯示的是使用 @Qualifier 註釋的一

Spring依賴注入(構造引數注入、集合,陣列屬性注入、XML自動注入 ,全註解配置)

依賴注入 構造引數注入        --> 常用的是方案一和方案二         MyBean類  YouBean類 <?xml version="1.0" encodin

java 靜態程式碼塊和spring @value等註解注入順序

今天在引用yml配置檔案的時候,因為用到了繼承的靜態程式碼塊。類與類有繼承關係的靜態程式碼塊是先執行父類靜態程式碼塊再執行子類靜態程式碼塊,這個問題不用說。 今天探索的是與spring相關的執行順序 我在專案啟動的時候需要去載入部分配置檔案,這些配置檔案的資訊在子類的靜態程式碼塊需要使用

Spring靜態工具類中使用註解注入bean

問題 最近在專案中遇到這樣一個情況:有一個傳送郵件的工具類。在這個工具類中提供了幾種靜態方法,靜態方法需要另外一個類的例項提供處理。在static方法裡呼叫注入進來的service,因為是靜態方法,所以必須宣告該service也必須是static的,這時候發現

Spring Spring 靜態屬性 注入的三種方式

Spring靜態注入的三種方式: (說明:MongoFileOperationUtil是自己封裝的一個Mongodb檔案讀寫工具類,裡面需要依賴AdvancedDatastore物件例項,dsForRW用來獲取Mongodb資料來源) 在springframewo