亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

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

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

本節(jié)學習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注入也叫設值注入,一般需要滿足的條件:無參構(gòu)造器,私有屬性,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.構(gòu)造器注入

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

配置文件代碼:

    <!--type2: 構(gòu)造器注入-->
    <!--
        constructor-arg 構(gòu)造方法參數(shù)標簽
            |==> name 參數(shù)名稱
            |==> type 參數(shù)類型
            |==> index 參數(shù)索引,從0開始
            |==> value 參數(shù)賦值(常量)
            |==> ref   參數(shù)引用(引用其他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.工廠類靜態(tài)方法注入

RoleFactory.java

package raky.train.factory;

import raky.train.entity.Role;

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

配置文件代碼:

    <!--type3:工廠類靜態(tài)方法==>類方法-->
    <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屬性,本質(zhì)上還是setter注入,必須要滿足setter的基本條件,此注入方式主要是簡化bean的配置。

配置規(guī)則如下:

//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構(gòu)造器,本質(zhì)上還是構(gòu)造器注入,必須要滿足構(gòu)造注入的基本條件,此注入方式主要是簡化bean的配置。

配置規(guī)則如下:

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

測試結(jié)果如下:

Spring容器6種注入方式

 

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

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

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

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

運動步數(shù)有氧達人2018-06-03

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

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

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

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