Spring框架复习06-spring属性注入的6种情况(方式)(非注解注入)

方式一:构造方法方式的属性注入

第一步:给类提供有参构造方法

public class User {

    private String name;//姓名

    private String sex;//性别

    public User(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }



    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

第二步:在配置文件中注入属性

<bean id="user" class="com.ctbu.domain.User">
        <constructor-arg name="name" value="黎明"/>
        <constructor-arg name="sex" value="34"/>
</bean>

 

方式二:使用set方法进行注入

第一步:给实体类属性提供set方法

public class User {

    private String name;//姓名

    private String sex;//性别

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public User(String name, String sex) {
        this.name = name;
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

第二步:在配置文件中注入属性

<bean id="User" class="com.ctbu.domain.User">
        <property name="name" value="锤子哥"/>
        <property name="sex" value="35"/>
</bean>

方式三:使用set方法注入对象类型的属性(注意:两个类都要交给spring管理才能成功注入)

第一步:给主体类设置好属性并提供方法

public class User {

    private String name;//姓名
    private String sex;//性别
    private Dog dog;//狗狗

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", dog=" + dog +
                '}';
    }
}

第二步:给次级类设定属性并提供set方法

public class Dog {
    private String name;
    private String color;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                '}';
    }
}

第三步:将两个类都交给spring管理,并注入属性

<bean id="User" class="com.ctbu.domain.User">
        <property name="name" value="锤子哥"/>
        <property name="sex" value="35"/>
        <property name="dog" ref="Dog"/>
</bean>

<bean id="Dog" class="com.ctbu.domain.Dog">
        <property name="name" value="哈士奇"/>
        <property name="color" value="黑白色"/>
</bean>

 

方式四:p名称空间注入(属性还是要提供set方法)

第一步:引入p名称空间约束

xmlns:p="http://www.springframework.org/schema/p"

第二步:使用p名称空间斤进行注入

<bean id="User" class="com.ctbu.domain.User" p:name="小红" p:sex="45" p:dog-ref="Dog"/>

<bean id="Dog" class="com.ctbu.domain.Dog" p:name="埃拉斯基" p:color="红色"/>

方式五:spEL表达式注入

<bean id="User" class="com.ctbu.domain.User">
        <property name="name" value="#{'李伟'}"/>
        <property name="sex" value="#{'455'}"/>
        <property name="dog" value="#{Dog}"/>
</bean>

<bean id="Dog" class="com.ctbu.domain.Dog">
        <property name="name" value="#{'萨摩耶'}"/>
        <property name="color" value="#{'黑色'}"/>
</bean>

方式六:集合属性类型的注入

1:数组

第一步:在实体类中建立一个数组类型的属性

public class User {

    private String name;//姓名
    private String[] house;//房子

    public void setName(String name) {
        this.name = name;
    }

    public void setHouse(String[] house) {
        this.house = house;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", house=" + Arrays.toString(house) +
                '}';
    }
}

第二步:在配置文件中配置数组属性注入

    <bean id="User" class="com.ctbu.domain.User">
        <property name="name" value="#{'李伟'}"/>
        <property name="house">
            <list>
                <value>别墅</value>
                <value>古堡</value>
                <value>洋房</value>
                <value>大厦</value>
            </list>
        </property>
    </bean>

2:List集合

第一步:创建一个list集合类型的属性

public class User {

    private String name;//姓名
    private List car;//汽车

    public void setName(String name) {
        this.name = name;
    }

    public void setCar(List car) {
        this.car = car;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", car=" + car +
                '}';
    }
}

第二步:在配置文件中配置属性注入

<bean id="User" class="com.ctbu.domain.User">
        <property name="name" value="#{'李伟'}"/>
        <property name="car">
            <list>
                <value>兰博基尼</value>
                <value>布加迪</value>
                <value>保时捷</value>
                <value>五菱宏光</value>
            </list>
        </property>
    </bean>

 

3:Set集合

第一步:实体类创建set类型的属性

public class User {

    private String name;//姓名
    private Set car;//汽车

    public void setName(String name) {
        this.name = name;
    }

    public void setCar(Set car) {
        this.car = car;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", car=" + car +
                '}';
    }
}

第二步:配置文件属性注入

<bean id="User" class="com.ctbu.domain.User">
        <property name="name" value="#{'李伟'}"/>
        <property name="car">
            <set>
                <value>兰博基尼</value>
                <value>布加迪</value>
                <value>保时捷</value>
                <value>五菱宏光</value>
            </set>
        </property>
    </bean>

4:Map集合

第一步:在实体类中建立map类型的属性

public class User {

    private Map man;

    public void setMan(Map man) {
        this.man = man;
    }

    @Override
    public String toString() {
        return "User{" +
                "man=" + man +
                '}';
    }
}

第二步:在配置文件中配置属性注入

<bean id="User" class="com.ctbu.domain.User">
        <property name="man">
            <map>
                <entry key="小红" value="女"/>
                <entry key="李白" value="男"/>
                <entry key="松江" value="男"/>
            </map>
        </property>
    </bean>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值