天天看点

Spring - IOC 依赖注入(XML方式)

      • bean标签
      • DI依赖注入
        • 1. setter方法注入
        • 2.使用有参构造注入
        • 3.注入null(使用标签)和带有特殊字符的属性值(使用<![CDATA[ ]]>)

bean标签

<bean id="user" class="com.d.Spring.IOC.User"></bean>
 常用属性:
		 id:类的唯一标识
		 class:类的全路径名称
		 创建对象的时候默认的是执行无参构造方法来创建对象
           

DI依赖注入

1. setter方法注入

User类:

public class User {
    public String name;

    public void setName(String name) {
        this.name = name;
    }
}
           

xml配置:

<bean id="user" class="com.d.Spring.IOC.User">
          <property name="name" value="sudi"></property>
</bean>
           

测试类:

public class testDemo {

    @Test
    public void demo(){
        ApplicationContext context = new ClassPathXmlApplicationContext("demo.xml");
        User user = context.getBean("user",User.class);
        System.out.println(user.name);
    }

}
           

User类中必须有对应属性的set方法,否则则会报错。

2.使用有参构造注入

User类:

public class User {
    public String name;
    public String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
           

xml配置文件:

<bean id="user" class="com.d.Spring.IOC.User">
                <constructor-arg name="name" value="sudi"></constructor-arg>
                <constructor-arg name="password" value="112456"></constructor-arg>
        </bean>
           

3.注入null(使用标签)和带有特殊字符的属性值(使用<![CDATA[ ]]>)

  1. 使用标签
以name属性为例子:
        <bean id="user" class="com.d.Spring.IOC.User">
                <property name="name" value="sudi"></property>
        </bean>
        
注入name属性值为null:
        <bean id="user" class="com.d.Spring.IOC.User">
                <property name="name">
                	<null/>
                </property>
        </bean>
           
  1. 使用<![CDATA[ ]]>
    Spring - IOC 依赖注入(XML方式)

若直接用property则会报错:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 13 in XML document from class path resource [demo.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 46; 与元素类型 "property" 相关联的 "value" 属性值不能包含 '<' 字符。

使用<![CDATA[ ]]>将带有特殊符号的属性值放入相应位置即可。

Spring - IOC 依赖注入(XML方式)
Spring - IOC 依赖注入(XML方式)