일상 기록 창고

@Configuration 과 @Bean 을 이용한 설정2 본문

프로그래밍/Spring (jsp)

@Configuration 과 @Bean 을 이용한 설정2

Crazy_Kong 2017. 3. 6. 16:18


import javax.sql.DataSource;


import org.apache.commons.dbcp.BasicDataSource;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.SqlSessionTemplate;

import org.springframework.context.ApplicationContext;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;


import net.sf.log4jdbc.Log4jdbcProxyDataSource;

import net.sf.log4jdbc.tools.Log4JdbcCustomFormatter;

import net.sf.log4jdbc.tools.LoggingType;


@Configuration

public class DbConfig {

@Bean(destroyMethod="close")

public DataSource dataSourceLog(){

BasicDataSource dataSourceLog = new BasicDataSource();

dataSourceLog.setDriverClassName("org.mariadb.jdbc.Driver");

dataSourceLog.setUrl("jdbc:mariadb://localhost/test");

dataSourceLog.setUsername("test");

dataSourceLog.setPassword("test");

            dataSourceLog.setValidationQuery("select 1");

dataSourceLog.setTestOnBorrow(true);

dataSourceLog.setTestWhileIdle(true);

dataSourceLog.setTimeBetweenEvictionRunsMillis(130000);

return dataSourceLog;

}

@Bean

public Log4jdbcProxyDataSource dataSource( DataSource dataSourceLog )

{

Log4JdbcCustomFormatter formatter = new Log4JdbcCustomFormatter();

formatter.setLoggingType(LoggingType.MULTI_LINE);

formatter.setSqlPrefix("SQL         :  \n");

Log4jdbcProxyDataSource dSource = new Log4jdbcProxyDataSource(dataSourceLog);

return dSource;

}

@Bean

    public SqlSessionFactory sqlSessionFactory(

                      Log4jdbcProxyDataSource dataSource, ApplicationContext applicationContext )throws Exception

   {

    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

    sessionFactory.setDataSource(dataSource);

    sessionFactory.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml"));

    sessionFactory.setMapperLocations(

           new PathMatchingResourcePatternResolver().getResources("classpath:mappers/**Mapper.xml")

      );

    return (SqlSessionFactory) sessionFactory.getObject();

    }

    

    @Bean

    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) throws Exception {

      SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);

      return sqlSessionTemplate;

    }

}