Skip to content

Spring注解解刨:不要在傻傻分不清楚

About 412 wordsAbout 1 min

2025-01-16

@Autowired注解

spring的注解

默认按类型装配,默认情况下必须要求依赖对象必须存在(不存在会报错),可以通过required=false属性设置非必须,如果我们想使用名称装配可以结合@Qualifier注解进行使用。

@Autowired(required = false)
private Date date;

@Autowired
@Qualifier("birth")
private Date birthday;

当系统中存在多个相同类型的Bean时,如果不使用@Qualified程序启动会报错。

@Bean
public Date d1(){
  return new Date;
}
public Date d2(){
  return new Date();
}
@Autowired
private Date date; // 会报错 required a single bean, but 2 found

@Resource javaEE注解

默认按名称进行装配,可以通过name属性指定名称,如果没有指定name属性,当注解写在字段上时,默认取字段名进行查找注入,如果写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就会值按照名称装配:

@Resource
private Date date;  // 会报错 No qualifying bean of type 'java.util.Date'

因为我们没有以date为名称的bean,所以会按照类型注入,但是类型又有两个Date的bean,将date改成d1或者d2指明name属性

@Resource("d1")
private Date date;

@Qualifier

Spring注解@Qualifier的详细用法你知道几种

筛选注入对象

@Resource
@Qualifier
private List<Date> dates = Collections.emptyList();

直接使用@Qualifier, 起到一个筛选的作用,只有Bean上有@Qualifier注解的bean才会被收集注入

Changelog

Last Updated: View All Changelog
  • feat(wiki): hammeSpoon: 复制出来的文件需要重新生成永链

    On 3/27/25

求求了,快滚去学习!!!

求求了求求了,快去学习吧!

【题单】贪心算法

不知道方向的时候,可以多看看书,书会给你指明下一步该干什么,加油!