栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring(二)自动装配(非注解)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring(二)自动装配(非注解)

spring(二)自动装配(非注解) 1.准备

一个people类,一个cat类,一个dog类,people含有dog和cat
Cat类:

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

Dog类:

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

People类:

public class People {
    //    使用注解的时候,变量名必须和配置文件对应的bean的id相同,而且使用该注解的话,可以将注解加在对应的set方法上,如果加在属性上,
    //对应的set方法可以省略
    @Autowired
    @Qualifier(value = "cat")
    private Cat cat;
    @Autowired
    @Qualifier(value = "dog")
    private Dog dog;
    private String name;
    public Cat getCat() {
        return cat;
    }
    public void setCat(Cat cat) {
        this.cat = cat;
    }
    public Dog getDog() {
        return dog;
    }
    public void setDog(Dog dog) {
        this.dog = dog;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "People{" +
                "cat=" + cat +
                ", dog=" + dog +
                ", name='" + name + ''' +
                '}';
    }
}
2.不使用注解进行自动装配 2.1ByName实现自动装配
#ByName:会在容器上下文中查找和自己对象的set方法后面的值的对应的beanid
    
    
    
    #使用byname的方式进行自动装配时,会在spring容器中去查找people中的set方法,如果想要装配成功,配置文件中两个动物的bean的id必须是people类中对应的set方法后面的值,如setDog,就会自动查找dog,将bean命名为dog1就会报错,原因是根据set后面的名称找不到对应的对象。
2.2ByType实现自动装配
#ByType:会在容器上下文中查找和自己对象属性所属类相同的beanclass,即dog是Dog类,就会去找Dog
	
    
    
2.3总结ByName和ByType的区别

ByName:需要保证动物的beanid和people中set方法的名字的后面保持一致(setDog的Dog和bean中的id:dog)

ByType:需要保证在spring配置文件中对同一个类型的对象只存在一个bean,对此我们在注册动物的bean的时候甚至id都不需要写,只写一个class(比如:已经注册了id为dog的Dog对象就不能在注册id为dog1的Dog对象)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285373.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号