- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个带有 spring boot v2.0.0.RELEASE 和 mongoDB 的 REST API。使用 spring-boot-starter-data-mongodb 连接 MongoDB。
在 application.properties 中,我可以更改与 mongodb 相关的基本配置,但我的问题是在高级属性方面管理这些配置的最佳方法是什么。例如,每个主机属性的连接无法通过 application.properties 更改。
因此,我使用 AbstractMongoConfiguration 并对其进行扩展,以提供上述配置,例如每个主机的连接。这是正确的方法吗?
最佳答案
我曾经创建外部属性文件,可以添加尽可能多的属性文件。我将属性读入 Map<Key, properties>
对于每个属性文件。
@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;
}
并为每个属性文件创建新的数据源,然后将它们放入另一个 map Map<Key, DataSource>
。
@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());
然后创建SqlSession
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 sqlSession = sqlSessionMap.get(key);
希望这对您有帮助。
关于java - Spring boot 的 MongoDB 配置 - AbstractMongoConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49746152/
我正在开发一个带有 spring boot v2.0.0.RELEASE 和 mongoDB 的 REST API。使用 spring-boot-starter-data-mongodb 连接 Mon
我想将我的类(class)组织成包。使用以下示例: https://spring.io/guides/gs/accessing-data-mongodb/ 我在“my.main.package”中有
我是一名优秀的程序员,十分优秀!