在Spring Boot中,@Bean
注解通常与其他注解一起使用,以实现更灵活的Bean管理、依赖注入和配置。以下是一些常见的搭配使用场景:
1. @Bean
与@Configuration
@Bean
注解通常用于配置类(带有@Configuration
注解的类)中,用于声明一个Bean。Spring容器会自动调用带有@Bean
注解的方法,并将方法的返回值注册为一个Bean。
java
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyService();
}
}
2. @Bean
与@Scope
@Scope
注解可以与@Bean
一起使用,用于指定Bean的作用域(如singleton
、prototype
等)。
java
@Bean
@Scope("prototype")
public MyService myService() {
return new MyService();
}
3. @Bean
与@Lazy
@Lazy
注解可以与@Bean
一起使用,表示延迟加载Bean。这意味着Bean只有在被首次使用时才会被初始化。
java
@Bean
@Lazy
public MyService myService() {
return new MyService();
}
4. @Bean
与@Primary
@Primary
注解可以与@Bean
一起使用,用于指定当存在多个同类型的Bean时,优先选择哪一个Bean。
java
@Bean
@Primary
public MyService primaryService() {
return new MyService();
}
5. @Bean
与@Profile
@Profile
注解可以与@Bean
一起使用,用于根据环境激活特定的Bean。
java
@Bean
@Profile("dev")
public MyService devService() {
return new DevService();
}
6. @Bean
与@DependsOn
@DependsOn
注解可以与@Bean
一起使用,用于指定当前Bean的依赖关系,确保某些Bean在当前Bean初始化之前被创建。
java
@Bean
@DependsOn("anotherBean")
public MyService myService() {
return new MyService();
}
7. @Bean
与@Autowired
@Bean
声明的Bean可以通过@Autowired
注解在其他组件中被自动注入。
java
@Service
public class MyService {
@Autowired
private MyBean myBean;
}
8. @Bean
与@Qualifier
当存在多个同类型的Bean时,@Qualifier
注解可以与@Autowired
一起使用,用于指定注入哪一个Bean。
java
@Autowired
@Qualifier("myService")
private MyService service;