Java Spring-Bean中属性注入
2017-11-06 20:29:13
- 类属性的注入的三种方法
1、接口方法注入
public interface injection{ public void setName(String name); } public class Impl implements injection{ private String name; public void setName(String name){this.name = name;} }
2、构造方法注入
3、setter方法注入
Spring中支持构造器注入和setter方法注入。
~ Spring中构造器的注入
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="car" class="spring4.Car"> <constructor-arg name="n" value="BMW"/> <constructor-arg name="p" value="600000"/> </bean> </beans>
代码文件:
public class Car { private String name; private int price; Car(String n, int p) { name = n; price = p; } @Override public String toString() { return "Car{" + "name='" + name + '\'' + ", price=" + price + '}'; } }
如果是对象属性注入,则使用ref = "id";
~ Spring中Setter方法注入(更常用)
setter方法注入:(必须有无参构造方法)
<bean id="car2" class="cn.itcast.spring3.demo5.Car2"> <!-- <property>标签中name就是属性名称,value是普通属性的值,ref:引用其他的对象 --> <property name="name" value="保时捷"/> <property name="price" value="5000000"/> </bean>
如果是对象属性注入,则使用ref = "id";
- 名称空间p,简化书写
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="car" class="spring4.Car" p:name="BMW" p:price="1000000"> </bean> </beans>
- SpEL注入
SpEL: 属性的注入 ,Spring3.0 提供注入属性方式 :
语法: #{表达式}
<bean id="" value="#{ 表达式 }"> <bean id="car2" class="cn.itcast.spring3.demo5.Car2"> <property name="name" value="#{' 大众 '}"></property> <property name="price" value="#{'120000'}"></property> </bean> <bean id="person" class="cn.itcast.spring3.demo5.Person"> <!--<property name="name" value="#{personInfo.name}"/>--> <property name="name" value="#{personInfo.showName()}"/> <property name="car2" value="#{car2}"/> </bean> <bean id="personInfo" class="cn.itcast.spring3.demo5.PersonInfo"> <property name="name" value=" 张三 "/> </bean>
- 集合属性的注入
<bean id="collectionBean" class="demo6.CollectionBean"> <!-- 注入List集合 --> <property name="list"> <list> <value>童童</value> <value>小凤</value> </list> </property> <!-- 注入set集合 --> <property name="set"> <set> <value>杜宏</value> <value>如花</value> </set> </property> <!-- 注入map集合 --> <property name="map"> <map> <entry key="刚刚" value="111"/> <entry key="娇娇" value="333"/> </map> </property> <property name="properties"> <props> <prop key="username">root</prop> <prop key="password">123</prop> </props> </property> </bean>