SpringBoot之@Bean 注解全解析
@Bean
是一个方法级别的注解,用于告诉 Spring 容器,被这个注解标注的方法将返回一个对象,这个对象要注册为 Spring 应用上下文中的 bean。
@Bean
注解通常在 @Configuration 注解下使用,@Configuration 注解表示该类是一个配置类,可以通过这个类的方法来创建 bean。
以下是一些使用 @Bean
的常见场景:
- 创建一个简单的 bean:
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
- 创建一个依赖于其他 bean 的 bean:
@Configuration
public class AppConfig {
@Bean
public MyBean myBean(DependencyBean dependencyBean) {
return new MyBean(dependencyBean);
}
}
- 为 bean 指定作用域:
@Configuration
public class AppConfig {
@Bean
@Scope("prototype")
public MyBean myBean() {
return new MyBean();
}
}
- 为 bean 指定初始化和销毁方法:
@Configuration
public class AppConfig {
@Bean(initMethod = "init", destroyMethod = "destroy")
public MyBean myBean() {
return new MyBean();
}
}
- 使用
@Bean
注解的 Factory 方法:
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
@Bean
public MyBeanExtension myBeanExtension() {
return new MyBeanExtension(myBean());
}
}
- 使用
@Bean
注解导入其他配置类:
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
@Bean
public AnotherConfig anotherConfig() {
return new AnotherConfig();
}
}
@Configuration
public class AnotherConfig {
@Bean
public AnotherBean anotherBean(MyBean myBean) {
return new AnotherBean(myBean);
}
}
- 使用
@Bean
注解定义外部资源:
@Configuration
public class AppConfig {
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
}
- 使用
@Bean
注解定义并注入 Properties:
@Configuration
public class AppConfig {
@Bean
public MyBean myBean() {
MyBean myBean = new MyBean();
myBean.setName("MyBean");
return myBean;
}
}
public class MyBean {
private String name;
// ge
评论已关闭