gpt4 book ai didi

java - Spring boot 的 MongoDB 配置 - AbstractMongoConfiguration

转载 作者:行者123 更新时间:2023-12-02 11:23:42 25 4
gpt4 key购买 nike

我正在开发一个带有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com