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

spring(三)基于注解的自动装配

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

spring(三)基于注解的自动装配

基于注解的自动装配 1.spring配置文件

使用注解实现自动装配,我们必须在配置文件中导入context依赖,并且开启注解的支持。下面是基于注解的配置文件



    
    
    

    
    

2.自动装配

还是以前面的三个类作为基础,在此基础上将前面两种装配方式改为基于注解的自动装配。

2.1@AutoWired

在使用该注解之前,需要保证我们所需要的实体类全部加载到spring容器中,然后才可以使用。
使用了自动装配以后,people类变成如下的样子

public class People {
    //    使用注解的时候,变量名必须和配置文件对应的bean的id相同,而且使用该注解的话,可以将注解加在对应的set方法上,如果加在属性上,
    //对应的set方法可以省略
    @Autowired
    private Cat cat;
    @Autowired
    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 + ''' +
                '}';
    }
}

如果我们使用了该注解其实set方法可以省略,但是尽量不要这么做。

至此,我们的自动装配就完成了,但是,该注解的使用的方式类似于byname方式,因此在这里我们的配置文件的beanid要和people类的set方法的后面相同(如:setCat,beanid就必须是cat,但是如果有多个class为cat类的bean怎么办?),单独使用该注解其实是不稳妥的。因此我们需要与下面的注解共同使用。

拓展:在该注解后面加上(required=false)表示该变量可以为空null。

2.2@Qualifier与@AutoWired配合使用

如果在bean中同时注册了多个class相同的bean,他们的id不同,这个时候单独使用@AutoWired其实是不合适的,我们可以通过@Qualifier(value=“beanid”)来表示我们具体装配的是哪一个bean。

#注册了两个同class的bean


//具体要装配哪个bean
	@Autowired
	@Qualifier(value="cat1")//装配id为cat1的bean
    private Cat cat;
2.3@Resource注解

这个注解是java中自带的一个注解。
它相当于@Qualifier与@AutoWired两者的结合,beanid可以不与set后面相同,当有多个相同class的bean时在后面加上一个参数(name = “beanid”)就可以装配指定id的bean。

	@Resource(name = "cat1")
    private Cat cat;

原理:首先使用byname的方式去查找,如果没有就使用bytype的方式去查找,但是如果此时有多个相同class的bean就会报错,此时我们就将该注解加上参数来指定需要装配的bean。

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

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

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