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

    科技2022-08-15  109

    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[ ]]>将带有特殊符号的属性值放入相应位置即可。

    Processed: 0.055, SQL: 9