无法弄清楚为什么它退出 Spring Boot 应用程序。它既不显示任何错误(日志)也不显示任何异常。但在某些调试点上,当 bean 被调用时,我得到了 NullBean。
这里的bean是数据源。 仅当数据源保存到映射对象中时调用 bean 时,应用程序才能工作,而不是使用 beans.getBean 方法调用。 任何建议,为什么 spring 容器没有指出任何问题或者为什么 Spring 容器没有提供 bean。
例如:
配置类
@Configuration
public class DataSourceConfig{
private static final Map<String, BasicDataSource> map = new HashMapo<>();
@Bean(name="pg")
public void getDataSource(){
BasicDataSource datasource = new BasicDataSource();
datasource.setUrl();
datasource.setUser();
datasource.setDriverClassName();
datasource.setCloudSqlInstance();
datasource.setSSLMode("disable");
//set the values from properties file
map.put("pg", dataSource);
}
public Map<String,BasicDataSource> getdataSources(){
return map;
}
}
----------------------------------------
@Component
@DataSourceElement(DataSource.PG)
class Example{
//
}
---------------------------------------
In enum class we defined.
enum DataSourceElement {
PG("pg");
private name;
public DataSourceElement(String name){
this.name = name;
}
}
---------------------------------------
@Component
class App{
@Autowired
private BeanFactory beans;
private void doGetBean(){
...
beans.getBean(this.dataSourceElement.PG, DataSource.class);
//It will return bean, but it's not working
}
}
调用示例类,然后它将使用 App 类来获取 bean 但是当尝试获取 bean 时,它不起作用
所以我很喜欢 DataSourceConfig.getdataSources().get("pg") - 它有效
回答你的问题。很明显。