Spring Boot 中注入 Bean 的常见方式如下,每种方式适用于不同的场景:
@Autowired
注解(字段注入)@Autowired
。@Resource
注解@Bean
方法(Java 配置类)@Configuration
类中定义 @Bean
方法,返回对象由 Spring 管理。@Value
注解@ImportResource
导入。ApplicationContextAware
手动获取ApplicationContext
,直接调用 getBean()
。@Inject
注解@Autowired
功能类似,需引入 javax.inject
依赖。@Autowired
注解标记在 Setter 方法上,Spring 会调用该方法注入依赖。Setter 方法注入是 Spring 中另一种常见的依赖注入方式,尤其是在早期 Spring 版本中广泛使用。可能因为它在现代 Spring Boot 项目中逐渐被构造器注入取代(官方推荐)
NullPointerException
。@RequiredArgsConstructor
)。null
,且有默认处理逻辑。 java 体验AI代码助手 代码解读复制代码@Autowired(required = false) // 依赖不存在时不报错 public void setOptionalDependency(OptionalDependency dep) { this.dep = dep != null ? dep : new DefaultDependency(); }
@Lazy
解决循环依赖(但设计上应尽量避免循环依赖)。通过类的构造器注入依赖,结合 Lombok 的 @RequiredArgsConstructor
可自动生成构造器。
java 体验AI代码助手 代码解读复制代码@Service
@RequiredArgsConstructor // Lombok 自动生成构造器(注入方式)
public class UserService {
private final UserRepository userRepository; // 依赖
}
@RequiredArgsConstructor
自动生成包含 final
字段的构造器,减少了手动编写构造器的代码量。@Service
)后,Spring 会自动通过生成的构造器完成依赖注入。@Autowired
(可选依赖)。ApplicationContextAware
(破坏控制反转)。@Resource
(按名称注入)、@Value
(配置值)或 @Bean
(复杂配置)。@Component
等注解声明 Bean + 构造器注入(配合 Lombok 简化代码)。本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。