Spring的Bean管理(XML方式)&属性注入

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名称空间的引用
  • 使用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>

猜你喜欢

转载自blog.csdn.net/qq_43642812/article/details/84581208