|
@@ -0,0 +1,69 @@
|
|
|
+package org.hsweb.web.dao.impl.mybatis.config;
|
|
|
+
|
|
|
+import org.apache.commons.logging.Log;
|
|
|
+import org.apache.commons.logging.LogFactory;
|
|
|
+import org.apache.ibatis.session.SqlSessionFactory;
|
|
|
+import org.mybatis.spring.SqlSessionFactoryBean;
|
|
|
+import org.mybatis.spring.annotation.MapperScan;
|
|
|
+import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
|
|
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|
|
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
|
|
+import org.springframework.boot.bind.RelaxedPropertyResolver;
|
|
|
+import org.springframework.context.EnvironmentAware;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
|
|
+import org.springframework.core.env.Environment;
|
|
|
+import org.springframework.core.io.DefaultResourceLoader;
|
|
|
+import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
|
|
+import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
|
|
+import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
|
+
|
|
|
+import javax.annotation.Resource;
|
|
|
+import javax.sql.DataSource;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取第二个数据库的连接信息,在application.yml中配置,并指定特定的前缀
|
|
|
+ */
|
|
|
+@Configuration
|
|
|
+@ConditionalOnClass({EnableTransactionManagement.class})
|
|
|
+@AutoConfigureAfter({DataBaseConfiguration.class})
|
|
|
+@MapperScan(basePackages = {"org.hsweb.web.dao"})
|
|
|
+@EnableAspectJAutoProxy(proxyTargetClass = true)
|
|
|
+public class MybatisConfiguration implements EnvironmentAware {
|
|
|
+ private static Log logger = LogFactory.getLog(MybatisConfiguration.class);
|
|
|
+
|
|
|
+ private RelaxedPropertyResolver propertyResolver;
|
|
|
+
|
|
|
+ @Resource(name = "dataSource")
|
|
|
+ private DataSource dataSource;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void setEnvironment(Environment environment) {
|
|
|
+ this.propertyResolver = new RelaxedPropertyResolver(environment, "mybatis.");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ @ConditionalOnMissingBean
|
|
|
+ public SqlSessionFactory sqlSessionFactory() {
|
|
|
+ try {
|
|
|
+ SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
|
|
|
+ sessionFactory.setDataSource(dataSource);
|
|
|
+ sessionFactory.setTypeAliasesPackage(propertyResolver.getProperty("typeAliasesPackage"));
|
|
|
+ sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(propertyResolver.getProperty("mapperLocations")));
|
|
|
+ sessionFactory.setConfigLocation(new DefaultResourceLoader().getResource(propertyResolver.getProperty("configLocation")));
|
|
|
+ return sessionFactory.getObject();
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("Could not confiure mybatis session factory", e);
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ @ConditionalOnMissingBean
|
|
|
+ public DataSourceTransactionManager transactionManager() {
|
|
|
+ return new DataSourceTransactionManager(dataSource);
|
|
|
+ }
|
|
|
+}
|