Spring 注解实现自动装配

本文介绍如何在Spring框架中实现依赖注入。通过配置XML文件及使用@Autowired和@Qualifier注解,可以实现类之间的自动装配。文章提供了详细的配置示例,包括配置文件的编写和装配过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、首先在spring配置文件加上相应的配置

<?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 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/>
</beans>

比起一般的spring配置,主要增加了以下几行:

<beans 
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/>
</beans>

二、在需要装配的类中添加注释

这里用到了三个类,Address、Name和People,其中Address和Name是People中的属性类型。

  • Autowired注释是通过ByType和ByName方式进行自动装配的。
  • ByName的优先级比ByType高,即有多个同类的bean时,程序会使用和目标类的属性同名的bean。
  • 多个同类的bean时,但没有和目标类的属性同名的bean时,程序会报错。
  • 使用Qualifier时,配置中必须要有指定名字的bean。
package cn.scut.pojo;

import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

@Data
public class People {
    @Autowired //自动装配该属性
    @Qualifier(value = "name")//指定注入的bean对象
    private Name name;
    @Autowired
    private Address address;
}
package cn.scut.pojo;

import lombok.Data;

@Data
public class Address {
    private String address;
}
package cn.scut.pojo;

import lombok.Data;

@Data
public class Name {
    private String name;
}

三、配置beans

<?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 http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <context:annotation-config/>
    <bean id="people" class="cn.scut.pojo.People"/>
    <bean id="name" class="cn.scut.pojo.Name">
        <property name="name" value="小明"/>
    </bean>
    <bean id="address" class="cn.scut.pojo.Address">
        <property name="address" value="文明路"/>
    </bean>
</beans>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值