Java 带Spring引导的MongoDB配置-抽象MongoConfiguration
我正在使用SpringBootV2.0.0.RELEASE和mongoDB开发RESTAPI。使用spring引导启动器数据MongoDB连接MongoDB im 在application.properties中,我可以更改与mongodb相关的基本配置,但我的问题是,当涉及高级属性时,管理这些配置的最佳方式应该是什么。例如,不能通过application.properties更改每个主机的连接属性Java 带Spring引导的MongoDB配置-抽象MongoConfiguration,java,spring,mongodb,spring-boot,Java,Spring,Mongodb,Spring Boot,我正在使用SpringBootV2.0.0.RELEASE和mongoDB开发RESTAPI。使用spring引导启动器数据MongoDB连接MongoDB im 在application.properties中,我可以更改与mongodb相关的基本配置,但我的问题是,当涉及高级属性时,管理这些配置的最佳方式应该是什么。例如,不能通过application.properties更改每个主机的连接属性 因此,我使用AbstractMongoConfiguration并对其进行了扩展,以便提供上述配
因此,我使用AbstractMongoConfiguration并对其进行了扩展,以便提供上述配置,例如每个主机的连接。这是正确的方法吗?我曾经创建过外部属性文件,可以尽可能多地添加这些文件。我将属性读入每个属性文件的
映射
@PostConstruct
public void properties() throws Exception{
// read properties and put them into map
crmPropertiesMap.put(key, properties);
}
@Bean(name = "crmPropertiesMap")
public Map<String, CRMProperties> getCrmPropertiesMap() {
return crmPropertiesMap;
}
希望这对你有帮助
@Bean
public Map<String, DataSource> dataSourceMap() {
Map<String, DataSource> dataSourceMap = new HashMap<>();
for( CRMProperties crmProperties : crmPropertiesMap.values())
{
// create DataSource
dataSourceMap.put(crmProperties.getHotelName(),
DataSourceBuilder.create()
.url(crmProperties.getSpringDatasourcePrimaryUrl())
.driverClassName(crmProperties.getSpringDatasourcePrimaryDriverClassName())
.username(crmProperties.getSpringDatasourcePrimaryUsername())
.password(crmProperties.getSpringDatasourcePrimaryPassword())
.build());
private SqlSession createSqlSession(String id) {
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment(id, transactionFactory, dataSourceMap.get(id));
Configuration configuration = new Configuration(environment);
configuration.addMapper(SaleInfoMapper.class);
return new SqlSessionTemplate(sqlSessionFactoryBuilder.build(configuration));
}
@Bean
public Map<String, SqlSession> sqlSessionMap() {
Map<String, SqlSession> sqlSessionMap = new HashMap<>();
for ( String id : dataSourceMap.keySet() )
{
sqlSessionMap.put(id, createSqlSession(id));
}
return sqlSessionMap;
}
SqlSession sqlSession = sqlSessionMap.get(key);