1、Spring对Bean的实例化方式
Bean已经都交给Spring进行管理,Spring在创建这些类的时候,有三种方式
1.1 无参构造方法的方式(默认)
编写类
public class Bean1{
public void Bean1(){
super();
System.out.println("Bean1的无参方法执行了");
}
}
编写配置
<bean id="bean1" class="com.xu.spring.demo3.Bean1"/>
1.2 静态工厂实例化的方式
编写类
public class Bean2Factory{
public static Bean2 createBean2(){
System.out.println("Bean2Factory中的方法执行了");
return new Bean2();
}
}
编写配置
<bean id="bean2" class="com.xu.spring.demo3.Bean2Factory" factory-method="createBean2"/>
1.3 实例工厂实例化的方式
编写类
public class Bean3Factory{
public static Bean3 createBean3(){
System.out.println("Bean3的实例工厂执行了");
return new Bean3();
}
}
编写配置
<bean id="bean3Factory" class="com.xu.spring.demo3.Bean3Factory"/>
<bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3"/>
2、Spring的属性注入
2.1 构造方法的属性注入
<bean id="car" class="com.xu.spring.demo4.Car">
<constructor-args name="name" value="宝马"/>
<constructor-args name="price" value="1000000"/>
</bean>
2.2 set方法的属性注入
2.2.1 set方法的普通类型属性注入
<bean id="car2" class="com.xu.spring.demo4.Car2">
<property name="name" value="宝马"/>
<property name="price" value="1000000"/>
</bean>
2.2.2 set方法设置对象类型的属性注入
<bean id="employee" class="com.xu.spring.demo4.Employee">
<!--value:设置普通类型的属性 ref:设置其他类的id或者name-->
<property name="name" value="小王"/>
<property name="car2" ref="car2"/>
</bean>
2.3 p名称空间的属性注入(spring2.5以后)
- 通过引用p名称空间完成注入
- 普通属性 p:属性名=“值”
- 对象属性 p:属性名-ref=“值”
- p名称空间的引用
- 使用p名称空间
<bean id="car2" class="com.xu.spring.demo4.Car2" p:name="QQ" p:price="200000">
<bean id="employee" class="com.xu.spring.demo4.Employee" p:name="小马" p:car2-ref="car2">
2.4 SpEL的属性注入(Spring3.0以后)
SpEL:Spring Expression Language,Spring的表达式语言。
- 语法
- #{SpEL}
<bean id="carInfo" class="com.xu.spring.demo4.carInfo"></bean>
<bean id="car2" class="com.xu.spring.demo4.car">
<property name="name" value="#{carInfo.name}"></property>
<property name="price" value="#{carInfo.calculatorPrice()}"></property>
</bean>
<bean id="empleey" class="com.xu.spring.demo4.Empleey">
<property name="name" value="#{'小徐'}"></property>
<property name="car2" value="#{car2}"></property>
</bean>
2.5 集合类型属性注入(了解)
<!-- Spring的集合属性的注入============================ -->
<!-- 注入数组类型 -->
<bean id="collectionBean" class="com.itheima.spring.demo5.CollectionBean">
<!-- 数组类型 -->
<property name="arrs">
<list>
<value>王东</value>
<value>赵洪</value>
<value>李冠希</value>
</list>
</property>
<!-- 注入list集合 -->
<property name="list">
<list>
<value>李兵</value>
<value>赵如何</value>
<value>邓凤</value>
</list>
</property>
<!-- 注入set集合 -->
<property name="set">
<set>
<value>aaa</value>
<value>bbb</value>
<value>ccc</value>
</set>
</property>
<!-- 注入Map集合 -->
<property name="map">
<map>
<entry key="aaa" value="111"/>
<entry key="bbb" value="222"/>
<entry key="ccc" value="333"/>
</map>
</property>
</bean>