springboot 配置多個jndi數據源
1.在application.properties中,添加jndi配置
如下圖
2.新建dataSourceConfig類
3.dataSourceConfig類詳細代碼
這里只貼出其中一個,多個數據源類似配置,只需更改 basePackages 路徑和 @Value("${spring.datasource.source1.jndi-name}"),以及下面名稱帶test1前綴的地方,不要和其他dataSourceConfig重名
@Configuration //注冊到springboot 容器中 @MapperScan(basePackages = "對應的Mapper包路徑",sqlSessionTemplateRef = "test1SqlSessionTemplate") public class DataSource1Config { //application.properties中的jndi名稱 @Value("${spring.datasource.source1.jndi-name}") private String jndiName; @Bean(name = "test1DataSource",destroyMethod = "") // destroy method is disabled for Weblogic update app ability @ConfigurationProperties(prefix = "spring.datasource.bigdata") public DataSource bigdataDs() throws NamingException { JndiObjectFactoryBean bean=new JndiObjectFactoryBean(); bean.setJndiName(jndiName); bean.setProxyInterface(DataSource.class); bean.setLookupOnStartup(false); bean.afterPropertiesSet(); return (DataSource) bean.getObject(); } @Bean(name = "test1SqlSessionFactory") public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); //加載其他文件,如mapper.xml // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/test1/*.xml")); return bean.getObject(); } //事務管理 @Bean(name = "test1TransactionManager") public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "test1SqlSessionTemplate") public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
4.打開tomcat目錄下context.xml文件
添加以下配置,多個數據源寫多個Resource即可,注意name需要和application.properties配置的名稱一致
<Resource name="jdbc/數據庫名稱" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/javatest"/>
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/qq_37030399/article/details/103405993