Spring-IoC-属性注入的注解实现

本文介绍了Spring框架中的四种主要注解(@Component、@Repository、@Service、@Controller)的使用,包括它们的作用和用途。同时详细讲解了包扫描机制,以及如何通过@Value进行属性注入和@Autowired、@Qualifier进行自动注入,还提到了@Resource的特性。

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

1、创建对象的注解

@Component

用于声明Bean对象的注解,在类上添加该注解后,表示将该类创建对象的权限交给Spring容器。可以直接将这些类直接创建,使用的时候可以直接用。

注解的value属性用于指定bean的id值,value可以省略,省略则默认id为类名首字母小写。

其它的,跟此注解用法是一样的,只不过用的地方不同

@Repository : 用于Dao实现类的注解

@Serivce : 用于Service实现类的注解

@Controller : 用与Controller实现类的注解

2、包扫描

需要再Spring配置组件扫描器,用于爱指定的基本包中扫描注解。

如果没有包扫描,添加的创建对象的注解则不生效。

红框内的是需要添加的内容。

可以使用context:component-scan指定不同的包路径

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- spring容器启动的时候需要加载配置文件,注解方式实现ioc的时候,明确通知spring那些包要扫描
    :指定的包以及子包中所有添加了component注解的类都会由spring容器来管理-->
    <!--扫描多个包的方式1-->
    <context:component-scan base-package="com.AE.dao"/>
    <context:component-scan base-package="com.AE.service"/>
    <context:component-scan base-package="com.AE.controller"/>

    <!--扫描多个包的方式2: 多个包都妨碍一个base-package中,多个包可以用逗号分号空格分隔,但是不推荐空格-->
    <context:component-scan base-package="com.AE.dao,com.AE.service,com.AE.controller"/>

    <!--扫描多个包的方式3: 直接添加父包-->
    <context:component-scan base-package="com.AE"/>

</beans>

3、属性注入 @Value

在属性上使用注解@Value,该注解的value属性用于指定要注入的值。使用该注解完成属性注入是,类中无需setter。当然,若属性有setter,则也可将其加到setter上。

4、自动注入

4.1、byType自动注入@Autowired

需要在引用属性上使用注解@Autowired,该注解默认使用按类型自动装配Bean的方式。使用该注解完成属性注入时,类中无需setter。当然,若属性有setter,则也可以加到setter上。

如下图,这种类的引用,可以通过该注解自动注入。通过类型查找注入。

4.2、byName自动注入@Autowired和@Qualifier

需要在引用属性上联合使用注解@Autowired 与@Qualifier。@Qualifier 的 value 属性用于指定要匹配的 Bean 的 id 值。类中无需 set 方法,也可加到 set 方法上。

@Autowired 还有一个属性 required,默认值为 true,表示当匹配失败后,会终止程序运行。若将其值设置为 false,则匹配失败,将被忽略,未匹配的属性值为 null。

如下

4.3、自动注入@Resource

这个跟之前的注解区别就是,这个注解是jdk1.6以上实现支持的。

1、byType注入引用类型属性

如果不带任何参数,则默认按名称的方式注入,按名称不能注入,则会按照类型进行bean的匹配注入。

2、byName注入引用类型属性

@Resource 注解指定其 name 属性,则 name 的值即为按照名称进行匹配的 Bean 的 id。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值