1. 程式人生 > >SSM框架專案搭建系列(四)— Spring之bean的XML注入方式

SSM框架專案搭建系列(四)— Spring之bean的XML注入方式

在XML中可使用兩種方式進行注入:建構函式注入和setter注入

建構函式注入constructor

直接傳值

applicationContext.xml

 <bean id="helloworldBeanId" class="com.ssm.beans.HelloWorld">
        <constructor-arg name="username" value="YEN"/>
        <constructor-arg name="password" value="123"/>
    </bean>

HelloWorld.java

public class HelloWorld {
    private String username;
    private String password;

    public HelloWorld(){

    }
    public HelloWorld(final String username,final String password){
        this.username=username;this.password=password;
    }

    public void show(){
        System.out.println("username:"
+username+" password:"+password); } }

HelloWorldTest.java

public class HelloWorldTest {
    public static void main(String[] args) {
        BeanFactory factory=new ClassPathXmlApplicationContext("applicationContext.xml");
        HelloWorld helloWorld= (HelloWorld) factory.getBean("helloworldBeanId"
); helloWorld.show(); } }

這裡寫圖片描述

根據索引賦值
更改applicationContext.xml

 <bean id="helloworldBeanId" class="com.ssm.beans.HelloWorld">
        <constructor-arg name="username" value="YEN" index="0"/>
        <constructor-arg name="password" value="123" index="1"/>
    </bean>

根據所屬型別傳值

 <bean id="helloworldBeanId" class="com.ssm.beans.HelloWorld">
        <constructor-arg name="username" value="YEN" type="java.lang.String"/>
        <constructor-arg name="age" value="123"  type="java.lang.Integer"/>
    </bean>

此時如果屬性型別一樣就很容易混亂

setter注入
直接注入

  <bean id="helloworldBeanId" class="com.ssm.beans.HelloWorld">
        <property name="username" value="YEN"/>
        <property name="password" value="123"/>
    </bean>

直接注入

 <bean id="helloworldBeanId" class="com.ssm.beans.HelloWorld">
        <property name="username">
            <value>YEN</value>
        </property>
        <property name="password">
            <value>123</value>
        </property>
    </bean>
 <bean id="helloworldBeanId" class="com.ssm.beans.HelloWorld" p:username="YEN" p:password="123"/>

用Setter注入時需要有無參建構函式。