首页 > 编程语言 > 详细

Spring DI注入技术

时间:2020-06-15 23:50:30      阅读:77      评论:0      收藏:0      [点我收藏+]

1概念:Dependence injection 依赖注入技术

   DI技术解决组件装配问题,不是对象创建问题,对象默认采用无参构造函数

   容器与bean对象建立关系,实现注入途径DI注入

   DI注入会自动将调用者需要的对象实例注入给调用者,调用者通过 Spring 容器获得被调用者实例,这称为依赖注入

2.两种注入方式

a..Spring的setter注入

在实体类中构造setter方法,基本类型value注入,对象类型ref注入,属性与成员变量不是同一个概念,此属性对应setter方法成员变量

b.构造器注入

<constructor-arg index="" value=""></constructor-arg>,默认通过有参构造,进行参数注入,在实体类中必须构造有参函数

根据参数个数,参数类型就行注入,有局限性

c.自动装配(自动注入)

可以简化Xml配置,使用autowire取值

no-不采用自动装配

byName-根据bean的属性值或者id属性值进行注入

byType-根据类型进行注入,不识别id,会发生冲突

constructor-应用于构造器参数

Card类

public class Card {

    private String suit;
    private int point;

CardPlayer类

public class CardPlayer {
    private String name;
    private int age;
public class MsgBean {
    private String name;
    private int length;
    private List<String> friends;
    private Set<String>  familys;
    private Map<String,String> phones;
    private Properties address;//属性集合属性
    

 

private Card card;
    
      private CardPlayer()
      { super(); // TODO Auto-generated constructor stub
      }
      
     

    private CardPlayer(String name, int age, Card card) {
        super();
        this.name = name;
        this.age = age;
        this.card = card;
    }

Xml里面bean组件配置

<bean id="card" class="com.tracy.bean.Card">
<property name="suit" value="红桃"></property>
<property name="point" value="13"></property>
</bean>
<!-- ref 直接引用id=“card” -->
<bean id="player" class="com.tracy.bean.CardPlayer">
<property name="name" value="赌王"></property>
<property name="age" value="19"></property>
<property name="card" ref="card"></property>
</bean>
<!-- 构造器注入 默认调用有参构造 -->
<bean id="player2" class="com.tracy.bean.CardPlayer">
<constructor-arg index="0" value="啊哈哈"></constructor-arg>
<constructor-arg index="1" value="200"></constructor-arg>
<constructor-arg index="2" ref="card"></constructor-arg>
</bean>

 技术分享图片

 自动装载数据类型

<!-- setter注入 --> 
<bean id="card" class="com.tracy.bean.Card">
    <property name="suit" value="红桃"></property>
    <property name="point" value="13"></property>
</bean>

<!-- ref 直接引用id=“card” -->
<bean id="player" class="com.tracy.bean.CardPlayer">
    <property name="name" value="赌王"></property>
    <property name="age" value="19"></property>
    <property name="card" ref="card"></property>
</bean>
  <!-- 构造器注入 默认调用有参构造 autowire="no" 自动化装配未开启  byName按名字装配-->
  <bean id="player2" class="com.tracy.bean.CardPlayer" autowire="constructor">
     <constructor-arg index="0" value="王八"></constructor-arg>
     <constructor-arg index="1" value="100"></constructor-arg>
</bean>

3.Bean参数注入

基本数据类型的注入:short int byte long float double String boolean

<!--基本数据类型进行注入-->
<bean id="player" class="com.tracy.bean.CardPlayer">
    <property name="name">
                <value>赌王</value>
     </property>
    <property name="age" >
            <value>18</value>
    </property>
    <property name="card" >
               <null></null>
   </property>
</bean>

4.集合注入

List Map Set Property

List注入允许重复  Set注入set不允许重复,可以排重

XML文件配置

<bean id="msg2" class="com.tracy.bean.MsgBean">
<property name="name" value="你的好友列表"></property>
<property name="length" value="4"></property>
<!--list集合注入 -->
<property name="friends">
<list>
<value>小明</value>
<value>小王</value>
<value>小张</value>
<value>小小</value>
<value>小小</value>

</list>
</property>
<!--set集合注入 -->
<property name="familys">
<set>
<value>小明</value>
<value>小王</value>
<value>小张</value>
<value>小小</value>
<value>小小</value>

</set>
</property>
<!-- Map集合注入 -->
<property name="phones">
<map>
<entry key="小赵" value="1772512999"></entry>
<entry key="小钱" value="1777777800"></entry>
<entry key="小孙" value="1777777800"></entry>
<entry key="小李" value="1777777800"></entry>

</map>
</property>
<property name="address">
<props>
<prop key="小周">兰州</prop>
<prop key="小吴">北京</prop>
<prop key="小郑">重庆</prop>
<prop key="小王">云南</prop>
</props>
</property>
</bean>

实体类

public class MsgBean {
    private String name;
    private int length;
    private List<String> friends;
    private Set<String>  familys;
    private Map<String,String> phones;
    private Properties address;//属性集合属性
    

5.单独自定义集合类

<!-- setter注入 --> 

<bean id="msg" class="com.tracy.bean.MsgBean">
    <property name="name" value="你的好友列表"></property>
    <property name="length" value="4"></property>
    <property name="friends"  ref="myFriends"></property>
    <property name="address" ref="myDress">    </property>
</bean>

<!--自定义集合类型  -->
<util:list id="myFriends">
            <value>小明</value>
            <value>小王</value>
            <value>小张</value>
            <value>小小</value>
</util:list>
<util:properties id="myDress">
           <prop key="小周">兰州</prop>
            <prop key="小吴">北京</prop>
            <prop key="小郑">重庆</prop>
            
</util:properties>

 

Spring DI注入技术

原文:https://www.cnblogs.com/tracyDemo/p/13128720.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!