@Bean @Component 默认名称类型 @Autowired @Resource默认注入方式

我们总是在埋头编码中忽略了它们的存在

Spring中有好多帮助我们管理对象的注解,由于没有搞懂各个注解具体的作用,导致被一个需求卡了好久,本篇博客帮你了解注解的作用,用大白话说清他们的作用。

@Bean

@Bean 注解是 Spring Framework 中的一个注解,它用于标记一个方法来定义一个 Bean 对象。Bean 是在 Spring IoC 容器中管理的对象,由容器负责创建、组装和管理。

可以应用于方法、注解类型
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})

@Bean 注解通常与 @Configuration 注解一起使用,后者用于标记一个类作为配置类,其中包含一个或多个使用 @Bean 注解的方法。

@Bean 注解的作用如下:

声明一个方法作为 Bean 的定义,Spring IoC 容器会调用该方法来创建一个实例。
将方法返回的对象注册为一个 Bean,可以通过名称或类型在应用程序的其他部分进行依赖注入。
可以对 Bean 进行更多的配置,例如设置作用域、初始化方法、销毁方法等。
示例:

java
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
以上示例中的 myBean() 方法被 @Bean 注解标记,它将返回一个 MyBean 对象,并将其注册为一个 Bean。
返回的Bean对象

  • 默认名称:方法名
  • 默认类型:返回类型

但也可以通过指定 name 属性来自定义 Bean 的名称。例如:@Bean(name = “myCustomBean”)。

@Component

@Component 注解是 Spring Framework 中的一个注解,用于标记一个类为一个组件。它是通用的注解,可以应用于任何类,表示该类被视为一个 Spring 管理的组件。

  • 默认名称:类名的首字母小写作为 Bean 的名称。例如,对于一个名为 MyComponent 的类:bean的名称为myComponent
  • 默认类型:与该注解所修饰类的类型相同
    需要注意的是,如果一个类同时实现了多个接口,则默认类型将是这些接口中的第一个接口。如果该类没有实现任何接口,则默认类型仍然是该类的类型。
    可以通过 value 或 name 属性自定义名称,并通过该名称在其他组件中引用该 Bean。

@Autowired

只支持按类型匹配

@Autowired
private MyComponent myComponent;

在上述示例中,@Autowired 注解将会根据默认规则(即按照类型)来匹配一个与 MyComponent 类型相符的 Bean,并将其注入到 myComponent 变量中。

如果类型一样的bean很多,就需要进一步按名字区分
可以使用自定义的限定符(Qualifier)来指定要注入的特定 Bean。例如:

@Autowired
@Qualifier("customQualifier")
private MyComponent myComponent;

在上述示例中,@Autowired 注解将会根据类型匹配所有符合条件的 Bean,并通过自定义限定符 “customQualifier” 来选择要注入的特定 Bean。

默认的匹配方式是按照类型进行查找和匹配。

总结起来,使用 @Autowired 注解时,默认的匹配方式是按照类型进行查找和匹配。可以使用默认方式或结合 @Qualifier 注解来实现更精确的匹配。

@Resource

在使用 @Resource 注解时,默认的匹配方式是按照名称进行查找和匹配。具体使用方法如下:

使用默认名称进行依赖注入:

@Resource
private MyComponent myComponent;

在上述示例中,@Resource 注解将会根据默认规则(即按照名称)来匹配一个名为 “myComponent” 的 Bean,并将其注入到 myComponent 变量中。

使用自定义名称进行依赖注入:
如果想要根据自定义的名称来匹配一个特定的 Bean,可以在 @Resource 注解中使用 name 属性来指定名称。例如:

@Resource(name = "customName")
private MyComponent myComponent;

在上述示例中,@Resource 注解将会根据指定的名称 “customName” 来匹配一个对应的 Bean,并将其注入到 myComponent 变量中。
需要注意的是,默认的匹配方式是按照名称进行查找和匹配。如果按照名称无法匹配到对应的 Bean,@Resource 注解会尝试按照类型进行匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值