**技术分析之Spring框架的属性注入**
1. 对于类成员变量,常用的注入方式有两种
* 构造函数注入
* 属性setter方法注入
2. 在Spring框架中提供了前两种的属性注入的方式
1. 构造方法的注入方式,两步
* 编写Java的类,提供构造方法
1 public class Car { 2 private String name; 3 private double money; 4 public Car(String name, double money) { 5 this.name = name; 6 this.money = money; 7 } 8 9 @Override 10 public String toString() { 11 return "Car [name=" + name + ", money=" + money + "]"; 12 } 13 }
* 编写配置文件
1 <bean id="car" class="com.itheima.demo4.Car"> 2 <constructor-arg name="name" value="大奔"/> 3 <constructor-arg name="money" value="100"/> 4 </bean>
2. 属性的setter方法的注入方式
* 编写Java的类,提供属性和对应的set方法即可
* 编写配置文件
3. 如果Java类的属性是另一个Java的类,那么需要怎么来注入值呢?
* <property name="name" rel="具体的Bean的ID或者name的值"/>
* 例如:
1 <bean id="person" class="com.itheima.demo4.Person"> 2 <property name="pname" value="美美"/> 3 <property name="car2" ref="car2"/> 4 </bean>
----------
**技术分析之Spring的2.5版本中提供了一种:p名称空间的注入(了解)**
1. 步骤一:需要先引入 p 名称空间
* 在schema的名称空间中加入该行:xmlns:p="http://www.springframework.org/schema/p"
2. 步骤二:使用p名称空间的语法
* p:属性名 = ""
* p:属性名-ref = ""
3. 步骤三:测试
* <bean id="person" class="com.itheima.demo4.Person" p:pname="老王" p:car2-ref="car2"/>
----------
**技术分析之Spring的3.0提供了一种:SpEL注入方式(了解)**
1. SpEL:Spring Expression Language是Spring的表达式语言,有一些自己的语法
2. 语法
* #{SpEL}
3. 例如如下的代码
1 <!-- SpEL的方式 --> 2 <bean id="person" class="com.itheima.demo4.Person"> 3 <property name="pname" value="#{'小风'}"/> 4 <property name="car2" value="#{car2}"/> 5 </bean>
4. 还支持调用类中的属性或者方法
* 定义类和方法,例如
1 public class CarInfo { 2 public String getCarname(){ 3 return "奇瑞QQ"; 4 } 5 }
----------
**技术分析之数组,集合(List,Set,Map),Properties等的注入**
1. 如果是数组或者List集合,注入配置文件的方式是一样的
1 <bean id="collectionBean" class="com.itheima.demo5.CollectionBean"> 2 <property name="arrs"> 3 <list> 4 <value>美美</value> 5 <value>小风</value> 6 </list> 7 </property> 8 </bean>
2. 如果是Set集合,注入的配置文件方式如下:
1 <property name="sets"> 2 <set> 3 <value>哈哈</value> 4 <value>呵呵</value> 5 </set> 6 </property>
3. 如果是Map集合,注入的配置方式如下:
1 <property name="map"> 2 <map> 3 <entry key="老王2" value="38"/> 4 <entry key="凤姐" value="38"/> 5 <entry key="如花" value="29"/> 6 </map> 7 </property>
4. 如果是properties属性文件的方式,注入的配置如下:
<property name="pro"> <props> <prop key="uname">root</prop> <prop key="pass">123</prop> </props> </property>
----------
**技术分析之Spring框架的配置文件分开管理(了解)**
1. 例如:在src的目录下又多创建了一个配置文件,现在是两个核心的配置文件,那么加载这两个配置文件的方式有两种!
* 主配置文件中包含其他的配置文件:
<import resource="applicationContext2.xml"/>
* 工厂创建的时候直接加载多个配置文件:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml","applicationContext2.xml");