日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本節學習Spring的DI/IOC容器的6種注入方式。

準備工作,編寫基礎類:

Role.JAVA

package raky.train.entity;

public class Role {
    private Integer id;
    private  String name;
    public Role() {
    }
    public Role(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", name='" + name + ''' +
                '}';
    }
}

User.java

package raky.train.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer id;
    private String name;
    private String pass;
    private Integer age;

    private Role role;
}

1.setter注入

setter注入也叫設值注入,一般需要滿足的條件:無參構造器,私有屬性,setter方法。

配置文件代碼:

    <!--type1: setter注入-->
    <bean id="role1" class="raky.train.entity.Role">
        <property name="id" value="1000" />
        <property name="name" value="dev" />
    </bean

    <bean id="user1" class="raky.train.entity.User">
        <property name="id" value="1000" /><!--注入:賦值-->
        <property name="name" value="raky" />
        <property name="pass" value="1234" />
        <property name="age" value="18" />
        <property name="role" ref="role1" /><!--注入:引用-->
    </bean>

2.構造器注入

構造器注入,也叫構造方法注入,一般需要提供構造器(類型,個數,順序),私有屬性,推薦添加默認無參構造器。

配置文件代碼:

    <!--type2: 構造器注入-->
    <!--
        constructor-arg 構造方法參數標簽
            |==> name 參數名稱
            |==> type 參數類型
            |==> index 參數索引,從0開始
            |==> value 參數賦值(常量)
            |==> ref   參數引用(引用其他bean)
        一般情況下,name屬性和index屬性二選一即可
    -->
    <bean id="role2" class="raky.train.entity.Role">
        <constructor-arg name="id" type="java.lang.Integer" index="0" value="2000" />
        <constructor-arg name="name" type="java.lang.String" index="1" value="lucy" />
    </bean>
    <bean id="user2" class="raky.train.entity.User" >
        <constructor-arg name="id" value="2000" />
        <constructor-arg name="name" value="jack" />
        <constructor-arg name="pass" value="5678" />
        <constructor-arg name="age" value="28" />
        <constructor-arg name="role" ref="role2" />
    </bean>

3.工廠類靜態方法注入

RoleFactory.java

package raky.train.factory;

import raky.train.entity.Role;

/**
 * 角色工廠類
 */
public class RoleFactory {
    //實例方法
    public Role createRoleInstance2(){
        return new Role(4000,"coco");
    }
}

配置文件代碼:

    <!--type3:工廠類靜態方法==>類方法-->
    <bean id="role3" class="raky.train.factory.RoleFactory" factory-method="creatRoleInstance1" />

4.工廠類實例方法注入

RoleFactory.java

package raky.train.factory;

import raky.train.entity.Role;

/**
 * 角色工廠類
 */
public class RoleFactory {
    //實例方法
    public Role createRoleInstance2(){
        return new Role(4000,"coco");
    }
}

配置文件代碼:

    <!--type4:工廠類實例方法==>對象方法-->
    <bean id="roleFactory" class="raky.train.factory.RoleFactory" />
    <bean id="role4" factory-bean="roleFactory" factory-method="createRoleInstance2" />

5.p命名空間注入

p命名空間中的p即property屬性,本質上還是setter注入,必須要滿足setter的基本條件,此注入方式主要是簡化bean的配置。

配置規則如下:

//1.beans標簽添加p命名空間
xmlns:p="http://www.springframework.org/schema/p"
//2.配置方式
賦值: p:屬性="值"
引用: p:屬性-ref="bean"

配置文件代碼:

    <!--type5:p命名空間注入-->
    <bean id="user5" class="raky.train.entity.User" p:id="5000" 
          p:name="xxx" p:pass="xxx" p:age="33" p:role-ref="role5" />

    <bean id="role5" class="raky.train.entity.Role" p:id="5000" p:name="test5" />

6.c命名空間注入

c命名空間中的c即constructor構造器,本質上還是構造器注入,必須要滿足構造注入的基本條件,此注入方式主要是簡化bean的配置。

配置規則如下:

//1.beans標簽添加c命名空間
xmlns:c="http://www.springframework.org/schema/c"
//2.配置方式
//2.1 屬性賦值:  
c:屬性="值"  引用: c:屬性-ref="bean"
//2.2 索引賦值:
c:_索引="值"  引用: c:_索引-ref="bean"

配置文件代碼:

    <!--type6: c命名空間注入-->
    <!--
    <bean id="user6" class="raky.train.entity.User" c:id="6000" c:name="yyy"
    c:pass="yyy" c:age="55" c:role-ref="role6" />
    <bean id="role6" class="raky.train.entity.Role" c:id="6000" c:name="test6" />
    -->
    <bean id="user6" class="raky.train.entity.User" c:_0="6000" c:_1="yyy"
          c:_2="yyy" c:_3="55" c:_4-ref="role6" />

    <bean id="role6" class="raky.train.entity.Role" c:_0="6000" c:_1="test6" />

測試結果如下:

Spring容器6種注入方式

 

至此,Spring的DI/IOC容器的6種注入方式的學習筆記整理完畢。希望對大家有幫助。越分享越快樂。

分享到:
標簽:容器 Spring
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定