- 该注释的属性的名称和语义类似于Spring XML模式中bean的元素的名称和语义。@Bean指示方法产生一个由Spring容器管理的bean
- @Bean可以用在方法和注释上
参数 |
描述 |
name |
此 bean 的名称,或者如果有多个名称,则是主 bean 名称加上别名。 |
value |
name属性的别名 |
initMethod |
在初始化期间调用 bean 实例的方法的可选名称。 |
destroyMethod |
关闭应用程序上下文时在 bean 实例上调用的方法的可选名称,例如 JDBC 数据源实现上的 close() 方法或 Hibernate SessionFactory 对象 |
autowireCandidate |
这个 bean 是否是自动装配到其他 bean 的候选者 |
- @Bean需要在配置类@Configuation中使用。@Component 标注的是类,允许通过自动扫描发现。
@Configuation + @Bean = @Component
- @Component类使用的方法或字段时不会使用CGLIB增强。而在@Configuration类中使用方法或字段时则使用CGLIB创造协作对象
- 用在方法上
示例
- DataSource.java
public class DataSource {
private String url;
private String userId;
private String password;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "DataSource{" +
"url='" + url + '\'' +
", userId='" + userId + '\'' +
", password='" + password + '\'' +
'}';
}
}
- DataBaseConfig.java
@Configuration
public class DataBaseConfig {
@Bean("dataSource")
public DataSource getDataSource(){
DataSource dataSource = new DataSource();
dataSource.setUserId("jingsi");
dataSource.setPassword("123456");
dataSource.setUrl("www");
return dataSource;
}
}
- @Bean可以为Bean同时定义多个别名,但是别名不能为空字符串
示例
@Configuration
public class DataBaseConfig {
@Bean({"dataSource","data2"})
public DataSource getDataSource(){
DataSource dataSource = new DataSource();
dataSource.setUserId("jingsi");
dataSource.setPassword("123456");
dataSource.setUrl("www");
return dataSource;
}
}