关于spring的自动装配超详细

spring:

Bean的显示装配

Cat Class:

package com.zz.pojo;

public class Cat {
    public void shout() {
        System.out.println("miao~");
    }
}

Dog Class:

package com.zz.pojo;

public class Dog {
    public void shout() {
        System.out.println("wang~");
    }
}

People Class:

package com.zz.pojo;

public class People {
    private Cat Cat;
    private Dog Dog;
    private String name;

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

    public String getName() {
        return name;
    }

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

    public com.zz.pojo.Cat getCat() {
        return Cat;
    }

    public void setCat(com.zz.pojo.Cat cat) {
        Cat = cat;
    }

    public com.zz.pojo.Dog getDog() {
        return Dog;
    }

    public void setDog(com.zz.pojo.Dog dog) {
        Dog = dog;
    }



}

显示装配:xml

 <bean id="dog" class="com.zz.pojo.Dog"/>
    <bean id="cat" class="com.zz.pojo.Cat"/>

    <bean id="people" class="com.zz.pojo.People">
        <property name="cat" ref="cat"/>
        <property name="dog" ref="dog"/>
        <property name="name" value="阿三"/>

Bean.xml中自动装配:

1.byname:

** byname:会自动在容器上下文中去查找,和自己对象set方法后面的值对应的beanid!

<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/> 
<bean id="people" class="com.zz.pojo.People" autowire="byName">
        <property name="name" value="李四"/>
   </bean>

所以必须要加所要实现需求的类

本例子中还有:Cat,Dog二类:所以要加上

<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>

进一步来说:就是1.去找id=“people” class="com.zz.pojo.People"到People

2.去看Set方法后面的值有没有

<bean id="dog" class="com.zz.pojo.Dog"/>
<bean id="cat" class="com.zz.pojo.Cat"/>

与之对应的

public void setDog(com.zz.pojo.Dog dog) {        Dog = dog;    }
public void setCat(com.zz.pojo.Cat cat) {        Cat = cat;    }

有 便进行自动装配

2.bytype:

bytype:会自动在容器上下中查找,和自己对象属性类型相同的bean

 <bean  class="com.zz.pojo.People" autowire="byType">
        <property name="name" value="李四"/>
    </bean>

3.区别

byname: 需要保证bean的id为唯一的,并且这个bean需要和自动注入的属性的set方法的值一致。

bytype:需要保证bean的class为唯一,并且这个bean需要和指导注入的属性的类型一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值