SpringFramework

Spring配置bean

2019-07-15  本文已影响0人  逗比寨主

1.IOC

IOC其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器会返回资源,应用IOC,容器主动地将资源推送给他所管理的组件,组件只需要选择合适的接收方式来接收资源

2.DI

IOC的另外一种表述方式,即组件以一些预先定义好的方式接收来自容器的资源注入

3.XML配置bean

<?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
        class:bean的全类名,通过反射方式在IOC容器中创建对象,
        id:标识容器中的对象的唯一标识
    -->
    <bean id="hellowWorld" class="com.spring.note.HellowWorld">
        <property name="name" value="Spring"></property>
    </bean>
</beans>

4.初始化IOC容器

方式一:

BeanFactory:IOC的基本实现,面向Spring本身

方式二:

ApplicationContext:提供了更多的高级特性,是BeanFactory的子接口,一般均使用ApplicationContext创建IOC容器

5.ApplicationContext实现类

ClassPathXmlApplicationContext:从类路径下加载配置文件

FileSystemXmlApplicationContext:从文件系统中加载配置文件

6.依赖注入方式

方式一:

属性注入,通过setter进行注入

<bean id="hellowWorld" class="com.spring.note.HellowWorld">
    <property name="name" value="Spring"></property>
</bean>

方式二:

构造方法注入,使用<constructor arg/>标明参数

<bean id="car" class="com.spring.note.Car">
    <constructor-arg value="300000" type="double" index="0"></constructor-arg>
    <constructor-arg value="JJY" index="1"></constructor-arg>
</bean>

<bean id="car2" class="com.spring.note.Car">
    <constructor-arg value="100" type="int" index="0"></constructor-arg>
    <constructor-arg value="JJY" index="1"></constructor-arg>
</bean>

或者使用value子节进行配置, 特殊字符可使用CDATA

<bean id="car2" class="com.spring.note.Car">
    <constructor-arg index="0">
        <value type="int">250</value>
    </constructor-arg>
    <constructor-arg index="1">
        <value><![CDATA[<JJY>]]></value>
    </constructor-arg>
</bean>

7.引用对象

使用property的ref属性指定引用,外部Bean

<bean id="user" class="com.spring.note.User">
    <property name="name" value="JJY"></property>
    <property name="age" value="24"></property>
    <property name="car" ref="car2"></property>
    <!--
            <property name="car" >
                <ref bean="car2"></ref>
            </property>
    -->
</bean>

内部Bean,内部Bean不能被外部引用。

<bean id="user" class="com.spring.note.User">
    <property name="name" value="JJY"></property>
    <property name="age" value="24"></property>
    <property name="car">
        <bean class="com.spring.note.Car">
            <constructor-arg value="100000" type="double"></constructor-arg>
            <constructor-arg value="奇瑞QQ"></constructor-arg>
        </bean>
    </property>
</bean>

8.级联属性

级联属性赋值时,必须先要初始化

<bean id="user" class="com.spring.note.User">
    <constructor-arg value="JJY"></constructor-arg>
    <constructor-arg value="30"></constructor-arg>
    <constructor-arg ref="car2"></constructor-arg>
    <property name="car.speed" value="30"></property>
</bean>

9.集合属性

有内置的集合标签 list、map、set、Propertise

List:

<bean id="house" class="com.spring.note.House">
    <property name="price" value="1000"></property>
    <property name="address" value="武汉"></property>
</bean>

<bean id="person" class="com.spring.note.Person">
    <property name="name" value="JJY"></property>
    <property name="houseList">
        <list>
            <bean class="com.spring.note.House">
                <property name="price" value="2000"></property>
                <property name="address" value="上海市"></property>
            </bean>
            <ref bean="house"></ref>
        </list>
    </property>
</bean>

Map:

<bean id="person2" class="com.spring.note.Person">
    <property name="name" value="JJY"></property>
    <property name="houseMap">
        <map>
            <entry key="1" value-ref="house"></entry>
            <entry>
                <key>
                    <value>2</value>
                </key>
                <ref bean="house1"></ref>
            </entry>

            <entry>
                <key>
                    <value>3</value>
                </key>
                <bean class="com.spring.note.House">
                    <property name="price" value="8000"></property>
                    <property name="address" value="北京"></property>
                </bean>
            </entry>
        </map>
    </property>
</bean>

Properties:

<property name="dataSource">
    <props>
        <prop key="userName">root</prop>
        <prop key="pwd">123456</prop>
        <prop key="jdbcUrl">jdbc:mysql:localhost:3303 </prop>
    </props>
</property>

Util Schema:

<util:list id="houseList">
    <ref bean="house"></ref>
    <ref bean="house1"></ref>
</util:list>

<bean id="person3" class="com.spring.note.Person">
    <property name="name" value="傻逼"></property>
    <property name="houseList" ref="houseList"></property>
</bean>

p命名空间:

<util:list id="houseList">
    <ref bean="house"></ref>
    <ref bean="house1"></ref>
</util:list>
<bean id="person4" class="com.spring.note.Person"
      p:name="DSB"
      p:houseList-ref="houseList">

</bean>
上一篇下一篇

猜你喜欢

热点阅读