Spring依赖注入(构造参数注入、集合,数组属性注入、XML自动注入 ,全注解配置)

版权声明:《==study hard and make progress every day==》 https://blog.csdn.net/qq_38225558/article/details/84203695

依赖注入

构造参数注入        --> 常用的是方案一和方案二         MyBean类  YouBean类

<?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">

    <!--  方案一:根据构造器参数的顺序(索引)注入   索引开始为0
         constructor-arg:构造器中的参数
            index:参数位置 / name:参数名称 / type:类型
            value:参数的值 / ref:引用其它的bean
    -->
    <bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
        <constructor-arg index="0" value="郑清" />
        <constructor-arg index="1"  value="18" />
    </bean>

    <!--  方案二:根据构造器参数的名称注入   注意:名称必须一致
    <bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
        <constructor-arg name="name" value="郑清" />
        <constructor-arg name="age"  value="18" />
    </bean>-->

    <!-- 方案三:根据构造器的类型注入
    <bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
        <constructor-arg type="java.lang.String" value="郑清" />
        <constructor-arg type="java.lang.Integer" value="18" />
    </bean>
    -->

    <!--
    <bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
        <constructor-arg value="郑清" />
        <constructor-arg value="46" />
    </bean>-->

    <!-- 如果有一个参数是我们自己的一个对象,怎么解决??    YouBean:为另外一个bean类 -->
    <!--方法一:先在外面定义
     <bean id="youBean" class="com.zhengqing._02_constructor.YouBean" />
     <bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
         <constructor-arg value="郑清" />
         <constructor-arg value="18" />
         <constructor-arg ref="youBean" />
     </bean>
     方法二:使用一个内部的Bean完成(不需要加id)
    <bean id="myBean" class="com.zhengqing._02_constructor.MyBean">
        <constructor-arg value="郑清" />
        <constructor-arg value="18" />
        <constructor-arg>
            <bean class="com.zhengqing._02_constructor.YouBean" />
        </constructor-arg>
    </bean>
    -->

</beans>

其它简单、集合属性注入     MyBean类

<?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 id="otherBean" class="com.zhengqing._03_di.OtherBean" />
    <!--
        property:属性(setXxx)
            name:属性名称
            value:属性值  / ref:引入属性值
    -->
    <bean id="myBean" class="com.zhengqing._03_di.MyBean">
        <property name="id" value="1" />
        <property name="name" value="郑清" />
        <property name="sex" value="true" />
        <property name="salary" value="10000" />
        <!-- private List<OtherBean> otherBeanList;  -有顺,可以重复 -->
        <property name="otherBeanList">
            <list>
                <ref bean="otherBean" />
                <ref bean="otherBean" />
                <bean class="com.zhengqing._03_di.OtherBean" />
                <bean class="com.zhengqing._03_di.OtherBean" />
            </list>
        </property>
        <!-- private Set<OtherBean> otherBeanSet;   -无序,不可以重复 -->
        <property name="otherBeanSet">
            <set>
                <ref bean="otherBean" />
                <ref bean="otherBean" />
                <bean class="com.zhengqing._03_di.OtherBean" />
                <bean class="com.zhengqing._03_di.OtherBean" />
            </set>
        </property>
        <!-- private Set<String> set; -->
        <property name="set">
            <set>
                <value>123</value>
                <value>ABC</value>
                <value>数据String</value>
            </set>
        </property>
        <!--  private List<String> set;   这种情况虽然不会报错,但不建议使用!!
        <property name="list">
            <list>
                <value>123</value>
                <value>ABC</value>
                <value>数据String</value>
            </list>
        </property> -->
        <!--
          String[] arrays  -数组
        <property name="arrays">
            <array>
                <value>数据1</value>
                <value>数据2</value>
                <value>数据3</value>
            </array>
        </property>
        -->
        <property name="arrays" value="数据1,数据2,数据3"></property>
        <!-- Properties props1:标准写法(支持中文) -->
        <property name="props1">
           <props>
               <prop key="dirverName">mysql</prop>
               <prop key="url">3306</prop>
               <prop key="username">root</prop>
               <prop key="password">admin支持中文</prop>
           </props>
        </property>
        <!-- Properties props2:简写方式  -->
        <property name="props2">
            <value>
                dirvenName=mysql
                url=3306
                username=root
                password=admin不支持中文
            </value>
        </property>
    </bean>
</beans>

XML自动注入

全注解配置

  @Component  普通仓库 
  @Repository  仓库(就是dao层) 
  @Service service层 
  @Controller  控制层(servlet、action)

第一步: 配置 让Spring扫描类与支持注解
第二步:在类里面加上注解
第三步:注解配置bean的名称(如果接口有两个实现会出问题,如何解决??         -- >为dao生成的bean加上名称,我们在调用的时候确定名称即可)
第四步:调用名称【方案一:使用@Autowired            方案二:使用@Resource】

ex:1个实现接口类的情况

2个实现接口类的情况

猜你喜欢

转载自blog.csdn.net/qq_38225558/article/details/84203695