第一次写博客,有写的不好的地方尽情见谅,不废话了,直接上配置步骤
1、配置yml数据源配置文件,代码如下:
spring:
datasource:
gac:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://rm-bp19n40dq378vht2ijo.mysql.rds.aliyuncs.com:3306/gac?useUnicode=true&characterEncoding=UTF-8
username: xxx
password: xxx
srmyzfactory:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://127.0.0.1:1433;DatabaseName=AccessData
username: xxx
password: xxx
2、配置项目入口启动类
package com.gac;
import com.InitConfiguration;
import com.InitServiceConfiguration;
import com.SrmYzFactoryMybatisDbConfig;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.servlet.MultipartConfigElement;
@Configuration
@EnableTransactionManagement
@SpringBootApplication
(exclude={
DataSourceAutoConfiguration.class,
// HibernateJpaAutoConfiguration.class, //(如果使用Hibernate时,需要加)
DataSourceTransactionManagerAutoConfiguration.class,
})
@Import({InitServiceConfiguration.class,InitConfiguration.class,SrmYzFactoryMybatisDbConfig.class})
@ComponentScan("com.gac")
public class adminApiApplication {
public static void main(String[] args) {
SpringApplication.run(adminApiApplication.class, args);
}
/**
* 文件上传配置
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
//文件最大
factory.setMaxFileSize("10240MB"); //KB,MB
/// 设置总上传数据总大小
factory.setMaxRequestSize("10240MB");
return factory.createMultipartConfig();
}
}
说明:InitConfiguration类为主数据源的配置类,SrmYzFactoryMybatisDbConfig类为从数据源的配置类,InitServiceConfiguration可以不理会,相关的配置类如下:
package com;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.apache.tomcat.jdbc.pool.DataSource;
import org.apache.tomcat.jdbc.pool.PoolProperties;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
/**
* Created by yanhao on 2017/11/23.
*/
@Configuration
@MapperScan(basePackages ="com.gac.mapper" , sqlSessionTemplateRef = "sqlSession")
public class InitConfiguration {
private static final Logger logger = Logger.getLogger(InitConfiguration.class);
public InitConfiguration() {
logger.info("Load and init mysql server....");
}
@Bean(name = "dataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.gac")
public DataSource dataSource() {
PoolProperties p = new PoolProperties();
p.setJmxEnabled(true);
p.setTestWhileIdle(true);
p.setTestOnBorrow(true);
p.setValidationQuery("SELECT 1");
p.setTestOnReturn(false);
p.setValidationInterval(30000);
p.setTimeBetweenEvictionRunsMillis(30000);
p.setMaxActive(200);
p.setInitialSize(20);
p.setMaxWait(10000);
p.setRemoveAbandonedTimeout(180);
p.setMinEvictableIdleTimeMillis(30000);
p.setMinIdle(10);
p.setLogAbandoned(true);
p.setJdbcInterceptors("org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;" +
"org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer");
DataSource dataSource = new DataSource();
dataSource.setPoolProperties(p);
return dataSource;
}
@Bean(name = "sqlSessionFactoryBean")
@Primary
public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/**/*.xml"));
logger.info("<========== Mysql DataSource ==========>: " + dataSource.getUrl());
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "sqlSession")
@Primary
public SqlSession sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
SqlSession sqlSession = new SqlSessionTemplate(sqlSessionFactory);
return sqlSession;
}
@Bean(name = "transactionManager")
@Primary
public PlatformTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
代码说明
从数据源配置类
package com;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.log4j.Logger;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = “com.gac.srmyzfactory”, sqlSessionFactoryRef = “srmYzFactorySqlSessionFactory”)
public class SrmYzFactoryMybatisDbConfig {
private static final Logger logger = Logger.getLogger(SrmYzFactoryMybatisDbConfig.class);
@Bean(name = "srmYzFactoryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.srmyzfactory")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "srmYzFactoryTransactionManager")
public DataSourceTransactionManager srmYzFactoryTransactionManager(@Qualifier("srmYzFactoryDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "srmYzFactorySqlSessionFactory")
public SqlSessionFactory srmYzFactorySqlSessionFactory(@Qualifier("srmYzFactoryDataSource") DataSource basicDataSource) throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(basicDataSource);
factoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().getResources("classpath:srmyzfactory/**/*.xml"));
logger.info("<========== MySqlServer DataSource ==========>: " + "111111111111111111111111111111111111111111111111111");
return factoryBean.getObject();
}
@Bean(name = "srmYzFactorySqlSessionTemplate")
public SqlSessionTemplate srmYzFactorySqlSessionTemplate(
@Qualifier("srmYzFactorySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
好了,配置完成了!!