-
-
- 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[ ]]>)
- 使用标签
以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>
- 使用<![CDATA[ ]]>
若直接用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[ ]]>将带有特殊符号的属性值放入相应位置即可。