Spring批量Setter方法注入配置的简化写法技巧
时间:2026-08-16 | 作者:风起客 | 阅读:0Spring Boot 不支持一键批量注入,但可通过 @Autowired 标注多个 setter 方法实现简化配置;每个 setter 参数类型需在容器中唯一,支持 @Resource 或 @Qualifier 精准匹配同类型 Bean,并天然规避单例循环依赖。
在 Spring Boot 里,多个 Setter 方法的批量注入,没有“一个语法一把梭”的官方写法。
不过,只要设计方式和注解搭配得当,配置依然可以精简很多。没必要给每个属性单独写一个 @Autowired 的 setter。
关键点在于:把 @Autowired 标在整个 setter 方法上,而不是字段上。同时,方法参数类型要足够明确,能够被 Spring 唯一识别并完成解析。
统一使用 @Autowired 标注 setter 方法
Spring 允许在任意 setter 方法上加 @Autowired。只要该方法只接收一个参数,且该参数类型在容器中唯一存在,就会自动完成注入。
多个 setter 可分别标注,无需额外配置。
- 每个 setter 方法独立承担一个依赖的注入职责,逻辑清晰、易于调试
- 方法名可自由命名,不强制为
setXxx,只要参数类型匹配即可 - 适用于非强制依赖,也便于单元测试时手动调用 setter 替换 mock 对象
配合 Lombok 简化代码冗余
如果类中 setter 较多,可用 Lombok 的 @RequiredArgsConstructor + @NonNull 实现构造注入。
但如果坚持用 setter 注入,Lombok 本身不能直接简化 @Autowired setter。此时可借助以下方式减少重复代码。
@Setter自动生成 setter 方法体,再手动添加@Autowired注解(推荐)- 避免手写重复的
public void setXxx(Xxx xxx) { this.xxx = xxx; } - 示例:
@Setter(onMethod_ = @Autowired)
private RedisTemplateredisTemplate;
@Setter(onMethod_ = @Autowired)
private RedissonClient redissonClient;
用 @Resource 或 @Qualifier 精准匹配同类型 Bean
当存在多个相同类型的 Bean,例如多个 DataSource,又想用 setter 注入时,不能只靠类型推断。
这时应结合 @Resource 或 @Qualifier 使用,确保注入目标准确。
@Resource(name = "xxx"):按 Bean 名称注入(JSR-250 标准,不依赖 Spring)@Autowired @Qualifier("xxx"):Spring 原生方式,更常用- 例如:
@Autowired
@Qualifier("primaryRedisTemplate")
public void setRedisTemplate(RedisTemplatetemplate) { ... }
@Resource(name = "secondaryRedisson")
public void setRedissonClient(RedissonClient client) { ... }
避免循环依赖的实用提醒
Setter 注入天然支持解决单例间的循环依赖。因为 Spring 会先实例化对象,再填充依赖。
但要满足以下前提条件。
- 所有涉及循环的 Bean 必须是单例(
@Scope("singleton"),默认即如此) - 不能混用构造器注入——构造器注入在实例化阶段就需全部依赖就绪,会直接报错
- 若发现启动时报
BeanCurrentlyInCreationException,检查是否某处误用了构造器注入触发了闭环
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- iOS Swift连续present多个页面报错或崩溃解决方法
- 时间:2026-08-21
-
- Dart中如何串联多个数据流实现流式处理
- 时间:2026-08-21
-
- SQL中COUNT DISTINCT统计多个字段的方法与写法
- 时间:2026-08-20
-
- 多个按钮如何分别绑定不同的dialog对话框实现方法
- 时间:2026-08-20
-
- GCC编译多个文件的命令写法与使用方法
- 时间:2026-08-20
-
- Spring项目多个Maven模块循环依赖问题分析与解决方法
- 时间:2026-08-20
-
- Clang编译多个文件找不到头文件的解决方法
- 时间:2026-08-18
-
- 多个来源网站列如何合并为单一列并保留其他字段信息
- 时间:2026-08-17
精选合集
更多大家都在玩
热门话题
大家都在看
更多-
- 神明蜕变逆袭RPG《星途天城》正式公测,强力神话星灵签到送,新手也能全图鉴!
- 时间:2026-10-22
-
- 蚂蚁新村小课堂今日答案10月22日 光伏发电运维值班员管理的是什么能源
- 时间:2026-10-22
-
- 蚂蚁新村2026年10月22日答案最新
- 时间:2026-10-22
-
- 蚂蚁庄园答案2026年10月23日
- 时间:2026-10-22
-
- 蚂蚁庄园今天答题答案2026年10月23日
- 时间:2026-10-22
-
- 蚂蚁庄园今日答案2026年10月23日
- 时间:2026-10-22
-
- “菊花霜"指的是秋季的哪一场霜 蚂蚁庄园今日答案10.23
- 时间:2026-10-22
-
- 小鸡答题今天的答案是什么2026年10月23日
- 时间:2026-10-22
