Spring中如何用註解的方式對有參構造器進行注入
阿新 • • 發佈:2018-11-15
一、我,,,無法對有參建構函式進行注入,但是可通過另一種註解方式達到相同效果(目的);
@Component /**①spring註解模式*/ public class ClassName { @Value("${file.value}") //引用屬性檔案變數值 /**② 屬性檔案注入*/ String paramName; //(把它看成建構函式的“引數”,Ps:其實它就是類成員變數,^_^;) @PostConstruct private void construct() { //通過@PostConstruct的必須執行,把它假裝看成一個建構函式 paramName = ""; //隨便對“建構函式”的“引數”進行操作, //... } }
1.application-context.xml的配置:
①啟動spring註解,且掃描其所在包,②屬性檔案注入;
<!-- 啟動spring註解 --> <context:annotation-config/> <!-- 掃描註解所在包 識別@component--> <context:component-scan base-package="ioc"></context:component-scan> <!-- 載入屬性檔案 --> <!-- 該屬性檔案在src下,名稱:file.properties --> <context:property-placeholder location="classpath:file.properties"/>
2.屬性檔案配置:
file.value="pramaValue"
3.建立專案檔案截圖:
圖片正在載入中。。。
^_^
三、當然了,如果非要給構造器寫入引數,也是可以的;不過,得使用關鍵字@Autowired,並在application-context.xml檔案中建立構造器引數的bean了,麻煩死了這個(如果這個引數的資料型別 是 基本資料型別/包裝類<int,double,String,>的話)
@Component /**①spring註解模式*/ public class ClassName { @Autowired public void construct(String paramName) { //通過@PostConstruct的必須執行,把它假裝看成一個建構函式 paramName = ""; //隨便對“建構函式”的“引數”進行操作, //... } }
那麼此時,.xml檔案中還應該為引數paramName建立bean(PS:有個引數就應建立幾個bean);
<bean id="paramName" class="java.lang.String">
<constructor-arg name="paramName" value="${file.path}"/>
</bean>
<!--
<bean></bean>
...
-->
三、建構函式引數注入標配版:
@Component /**①spring註解模式*/
public class ClassName {
public construct(String paramName) { //通過@PostConstruct的必須執行,把它假裝看成一個建構函式
paramName = ""; //隨便對“建構函式”的“引數”進行操作,
//...
}
}
那麼此時,.xml檔案中還應該為引數paramName建立bean;
<bean id="className" class="**.ClassName">
<constructor-arg name="paramName" value="${file.path}"/>
</bean>