Blame view

src/main/java/com/daeucna/board/config/DataSourceConfig.java 2.53 KB
a6468920   sangkiham   Spring Boot Board...
1
2
3
4
  package com.daeucna.board.config;

   

  import javax.sql.DataSource;

  

a6468920   sangkiham   Spring Boot Board...
5
6
7
  import org.apache.ibatis.session.SqlSessionFactory;

  import org.mybatis.spring.SqlSessionFactoryBean;

  import org.mybatis.spring.SqlSessionTemplate;

a6468920   sangkiham   Spring Boot Board...
8
9
10
11
12
  import org.springframework.boot.context.properties.ConfigurationProperties;

  import org.springframework.boot.jdbc.DataSourceBuilder;

  import org.springframework.context.ApplicationContext;

  import org.springframework.context.annotation.Bean;

  import org.springframework.context.annotation.ComponentScan;

cb01f7b1   sangkiham   .
13
  import org.springframework.context.annotation.ComponentScan.Filter;

a6468920   sangkiham   Spring Boot Board...
14
15
  import org.springframework.context.annotation.Configuration;

  import org.springframework.context.annotation.FilterType;

a6468920   sangkiham   Spring Boot Board...
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

  import org.springframework.jdbc.datasource.DataSourceTransactionManager;

  import org.springframework.transaction.PlatformTransactionManager;

  import org.springframework.transaction.annotation.TransactionManagementConfigurer;

  

  import com.zaxxer.hikari.HikariDataSource;

   

  @ComponentScan(

  	basePackages = "com.daeucna", 

  	useDefaultFilters = false,

  	includeFilters = {

  	    @Filter(

  	        type = FilterType.REGEX,

  	        pattern = {".*Service.*"}

  	    )

  	}

  )

  

  @Configuration

  public class DataSourceConfig implements TransactionManagementConfigurer {

    

      @Bean

      @ConfigurationProperties(prefix = "spring.datasource.hikari")

      public DataSource dataSource() {

          return DataSourceBuilder.create()

                                  .type(HikariDataSource.class)

                                  .build();

      }

   

      @Bean

      public SqlSessionFactory sqlSessionFactory(DataSource dataSource, ApplicationContext applicationContext) throws Exception {

          

          SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

          sessionFactory.setDataSource(dataSource);

          sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*.xml"));

          

          return sessionFactory.getObject();

      }

   

      @Bean

      public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) throws Exception {

          return new SqlSessionTemplate(sqlSessionFactory);

      }

      

      @Bean

      public PlatformTransactionManager transactionManager() {

          return new DataSourceTransactionManager(dataSource());

      }

      

      @Override

      public PlatformTransactionManager annotationDrivenTransactionManager() {

          return transactionManager();

      }

  }