环境:
1、springboot2 jpa tomcat8
2、启动方式:tomcat8启动
3、没有xml文件和其他配置文件,全部要集成到yml文件中
我需要详细的代码,包括config文件中引入的包。
数据源的相关配置全部要放到tomcat的context.xml中。
如果可以,最好使用JNDI
愿意有偿酬谢,我QQ529629886
环境:
1、springboot2 jpa tomcat8
2、启动方式:tomcat8启动
3、没有xml文件和其他配置文件,全部要集成到yml文件中
我需要详细的代码,包括config文件中引入的包。
数据源的相关配置全部要放到tomcat的context.xml中。
如果可以,最好使用JNDI
愿意有偿酬谢,我QQ529629886
已经测试验证,两步即可:
1、yml配置如下
jndi-datasource: #jndi数据源的配置
open: true #是否开启jndi配置
jndiNameList: #开启jndi配置时,配置如下信息,spring.datasource不在生效
- dataSourceName: dataSource
dialect: oracle
jndiName: java:comp/env/jdbc/ccense
- dataSourceName: dataSource2
dialect: oracle
jndiName: java:comp/env/jdbc/face
2、创建JndiDataSourceConfig.java
@ConditionalOnProperty(prefix = "jndi-datasource", name = "open", havingValue = "true")
@Configuration
@EnableTransactionManagement(order = 2)
@Slf4j
public class JndiDataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "newcap.jndi-datasource")
public JNDIProperties jndiProperties() {
JNDIProperties jndiProperties = new JNDIProperties();
return jndiProperties;
}
@Bean(name = "dataSource")
public DynamicDataSource dataSource() {
HashMap<Object, Object> hashMap = new HashMap<>();
JNDIProperties jndiProperties = jndiProperties();
for (JndiProperties properties : jndiProperties.getJndiNameList()){
DataSourceDialect.dataSourceNameDialect.put(properties.getDataSourceName(), properties.getDataSourceName());
JndiDataSourceLookup lookup = new JndiDataSourceLookup();
lookup.setResourceRef(true);
DataSource dataSource = lookup.getDataSource(properties.getJndiName());
hashMap.put(properties.getDataSourceName(), dataSource);
}
DynamicDataSource dynamicDataSource = new DynamicDataSource();
dynamicDataSource.setTargetDataSources(hashMap);
//设置主数据源
dynamicDataSource.setDefaultTargetDataSource(hashMap.get(DatasourceEnum.DATA_SOURCE));
return dynamicDataSource;
}
}