• Spring笔记②--各种属性注入


    Ioc 反转控制 反转资源获取的方向

    分离接口与实现

    采用工厂模式

    采用反转控制

     

    Di 依赖注入 依赖容器把资源注入

     

    配置bean 通过全类名(反射)

    配置形式:基于xml方式

    Ioc容器的beanFactory&ApplicationContext

    依赖注入的方式:属性注入,构造器注入

     

     

    Bean必须要有一个无参的构造函数

    Class:bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参的构造函数

    id :bean 的标示,id唯一

     

    applicationContext 是spring的ioc容器,是一接口。

    其实现类:

    ClassPathXmlApplicatContext从类的路径下来加载配置文件

    Getbean()

    FileSystemXmlApplicationContext

     

    属性注入

    通过setter方法注入bean的属性值或依赖的对象

    属性注入使用<property>元素,使用name属性指定bean的属性名称,value属性或<value>子节点指定属性值。

    属性注入是实际应用中最常见的注入方式。

    <bean id="helloWorld" class="com.test.bean.HelloWorld">

            <property name="name" value="spring"></property>

        </bean>

    构造函数注入

    <!-- 通过构造函数配置bean的属性 -->

        <bean id="car" class="com.test.bean.Car">

            <constructor-arg value="audi" index="0"></constructor-arg>

            <constructor-arg value="shanghai" index="1"></constructor-arg>

            <constructor-arg value="30000" index="2" type="double"></constructor-arg>

        </bean>

        

        <bean id="car2" class="com.test.bean.Car">

            <constructor-arg value="bwm"></constructor-arg>

            <constructor-arg value="shandong"></constructor-arg>

            <constructor-arg value="30000" type="int"></constructor-arg>

        </bean>

    使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器!

    如果value字面的值中包含特殊字符就可以通过<![CDATA[字符串]]>的形式注入。

    我们也可通过value子节点进行配置

     

    可以使用property的ref属性建立bean之间的引用关系。

        <bean id="person" class="com.test.bean.Person">

            <property name="name" value="zhangsan"></property>

            <property name="age" value="20"></property>

            <property name="car" ref="car2"></property>

        </bean>

     

    可以通过一组内置的xml标签来配置集合属性如 list set map

    <bean id="person2" class="com.test.bean.collect.Person">

            <property name="name" value="lisi"></property>

            <property name="age" value="20"></property>

            <property name="cars">

                <list >

                    <ref bean="car" />

                    <ref bean="car2" />

                </list>

            </property>

        </bean>

     

     

    也可通过内部bean来注入属性

     

    <bean id="person2" class="com.test.bean.collect.Person">

            <property name="name" value="lisi"></property>

            <property name="age" value="20"></property>

            <property name="cars">

                <list >

                    <ref bean="car" />

                    <ref bean="car2" />

                    <bean class="com.test.bean.Car">

                        <constructor-arg value="ford"></constructor-arg>

                        <constructor-arg value="济南"></constructor-arg>

                        <constructor-arg value="20000" type="int"></constructor-arg>

                    </bean>

                </list>

            </property>

     

    Map注入

    <bean id="newPerson" class="com.test.bean.collect.NewPerson">

            <property name="name" value="Wangwu"></property>

            <property name="age" value="20"></property>

            <property name="cars">

                <map>

                    <entry key="AA" value-ref="car"/>

                    <entry key="BB" value-ref="car2"/>

                </map>

            </property>

        </bean>

     

    Properties属性注入

     

        <bean id="dataSource" class="com.test.bean.collect.DataSource">

            <property name="properties">

                <props>

                    <prop key="user">root</prop>

                    <prop key="password">root</prop>

                    <prop key="jdbcUrl">jdbc:mysql:///test</prop>

                    <prop key="driverClass">com.mysql.jdbc.Driver</prop>

                </props>

            </property>

        </bean>

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Visual Studio DSL 入门 11为状态机设计器添加规则
    不平静的2009,期待更不平静的2010
    ASP.NET MVC 2 正式发布
    [翻译] DSL和模型驱动开发的最佳实践(2/4)
    Visual Studio DSL 入门 9创建状态机的图形符号
    Visual Studio DSL 入门 6DSL的图形表示1
    智诚B2C1.31正式发
    一个程序员的创业尝试
    Visual Studio DSL 入门 13结合T4生成代码
    Visual Studio DSL 入门 10完善状态机案例
  • 原文地址:https://www.cnblogs.com/chengzhipcx/p/4761683.html
Copyright © 2020-2023  润新知