spring自动装配

本文介绍了Spring框架中两种自动装配方式:ByName和ByType,以及如何通过注解@Autowired、@Qualifier和@Resource进行更精确的自动装配。ByName依赖于bean的id,ByType依赖于bean的类,而注解方式提供了更大的灵活性,可以指定注入的bean名称。
摘要由CSDN通过智能技术生成

Spring自动装配

环境搭建:

一个人有两只宠物,一只猫一只狗。

public class People {

    private Cat cat;
    private Dog dog;
    private String name;
    //此处省略构造器 get set toString方法
}
public class Dog {
    public void shout(){
        System.out.println("旺旺~~");
    }
}
public class Cat {
    public void shout(){
        System.out.println("喵~~");
    }
}

1、ByName自动装配

<bean id="dog" class="com.fan.autowired.Dog"/>

<bean id="cat" class="com.fan.autowired.Cat"/>

<bean id="people" class="com.fan.autowired.People" autowire="byName">
    <property name="name" value="fan"/>
</bean>

2、ByType自动装配

<bean id="dog" class="com.fan.autowired.Dog"/>

<bean id="cat" class="com.fan.autowired.Cat"/>

<bean id="people" class="com.fan.autowired.People" autowire="byType">
    <property name="name" value="fan"/>
</bean>

总结:

  • ByName需要保证所有bean的id唯一,并且需要自动注入的属性的set方法值一致!
  • ByType需要保证所有bean的class唯一,并且需要自动注入的属性的类型一致!

3、使用注解实现自动装配

使用注解须知:

  1. 需要导入约束 context约束

  2. 配置注解的支持

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd">
        <context:annotation-config/>
    </beans>
    
  3. 使用注解

    public class People {
        @Autowired
        private Cat cat;
        @Autowired
        private Dog dog;
        private String name;
    	
        //省略 get set toString方法
    }
    
  4. 配合@Qualifier(value = “xxx”)使用可以指定注入bean

    public class People {
    	@Autowired
    	@Qualifier(value = "cat")
    	private Cat cat;
    	@Autowired
    	private Dog dog;
    	private String name;
    
    	//省略 get set toString方法
    } 
    
  5. 除了@Autowired外还可以使用@Resource()注解进行自动装配

    @Resource(name = "dog")
    private Dog dog;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值