1. 程式人生 > >Spring中如何用註解的方式對有參構造器進行注入

Spring中如何用註解的方式對有參構造器進行注入

一、我,,,無法對有參建構函式進行注入,但是可通過另一種註解方式達到相同效果(目的);

@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>