Spring配置bean

作者: 逗比寨主 | 来源:发表于2019-07-15 18:39 被阅读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>
    

    相关文章

      网友评论

        本文标题:Spring配置bean

        本文链接:https://www.haomeiwen.com/subject/plsokctx.html