Spring在配置文件中的属性注入

Spring在配置文件中的属性注入applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns="http://www.springframework.org/schema/beans"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">

<!-- 1.set方式注入:property标签引入属性和值 -->

<bean  name="user1" class="cn.example.bean.User" >

<!--值类型注入: 为User对象中名为name的属性注入tom作为值 -->

<property name="name" value="tom" ></property>

<property name="age"  value="18" ></property>

<!-- 引用类型注入: 为car属性注入下方配置的car对象 -->

<property name="car"  ref="car" ></property>

</bean>

<!-- ============================================================ -->

 

<bean name="car" class="cn.example.bean.Car" >

<property name="name" value="天才" ></property>

<property name="color" value="黄色" ></property>

</bean>

<!-- ============================================================ -->

 

<!-- 2.构造函数注入:constructor-arg标签 -->

<bean name="user2" class="cn.example.bean.User" >

<!-- name: 构造函数的参数名  index:参数索引  type:参数类型-->

<constructor-arg name="name" index="0" type="java.lang.Integer" value="999"  ></constructor-arg>

<constructor-arg name="car" ref="car" index="1" ></constructor-arg>

</bean>

<!-- ============================================================= -->

 

<!--3. p名称空间注入, 实际执行的是set方法

需要导入P名称空间  xmlns:p="http://www.springframework.org/schema/p"

值类型: p:属性名="值"对象类型: p:属性名-ref="bean名称"-->

<bean  name="user3" class="cn.example.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean>

<!-- ============================================================= -->

 

<!--4.spel注入:spring Expression Language sping表达式语言-->

<bean  name="user4" class="cn.example.bean.User" >

<property name="name" value="#{user1.name}" ></property>

<property name="age" value="#{user3.age}" ></property>

<property name="car" ref="car" ></property>

</bean> 

<!-- ============================================================= -->

 

<!--5. 复杂类型注入 -->

<bean name="cb" class="cn.example.c_injection.CollectionBean" >

<!-- 如果数组中只准备注入一个值(对象),直接使用value|ref即可

<property name="arr" value="tom" ></property> -->

 

<!-- array注入,多个元素注入 -->

<property name="arr">

<array>

<value>tom</value>

<value>jerry</value>

<ref bean="user4" />

</array>

</property>

<!-- 如果List中只准备注入一个值(对象),直接使用value|ref即可  -->

<!-- <property name="list" value="jack" ></property> -->

<property name="list"  >

<list>

<value>jack</value>

<value>rose</value>

<ref bean="user3" />

</list>

</property>

<!-- map类型注入 -->

<property name="map"  >

<map>

<entry key="url" value="jdbc:mysql:///crm" ></entry>

<entry key="user" value-ref="user4"  ></entry>

<entry key-ref="user3" value-ref="user2"  ></entry>

</map> 

</property>

<!-- prperties 类型注入 -->

<property name="prop"  >

<props>

<prop key="driverClass">com.jdbc.mysql.Driver</prop>

<prop key="userName">root</prop>

<prop key="password">1234</prop>

</props>

</property>

</bean>

</beans>

测试代码:

public void fun1(){

ApplicationContext ac = new ClassPathXmlApplicationContext("cn/itcast/c_injection/applicationContext.xml");

User u = (User) ac.getBean("user1");

//User u = (User) ac.getBean("user2");

//User u = (User) ac.getBean("user3");

//User u = (User) ac.getBean("user4");

//CollectionBean cb = (CollectionBean) ac.getBean("cb");

System.out.println(u);

}

猜你喜欢

转载自blog.csdn.net/u011266694/article/details/78918357