2015년 3월 23일 월요일

Mybatis java config 설정

MyBatisContext.java
-       mapper 스캔처리
-       SqlSessionTemplate 설정
-       기타 설정 처리
package com.example.config;

@Configuration
@EnableTransactionManagement
@MapperScan(
        annotationClass=Mapper.class,
        basePackages="com.lge.apip.mgmt",
        sqlSessionFactoryRef="sqlSessionFactoryBean")
public class MyBatisContext {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyBatisContext.class);
 

    /**
     * myBatis의 {@link org.apache.ibatis.session.SqlSessionFactory}을 생성하는 팩토리빈을 등록한다.
     */
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(
            DataSource dataSource, ApplicationContext applicationContext) throws IOException {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        // 마이바티스가 사용한 DataSource를 등록
        factoryBean.setDataSource(dataSource);
        // 마이바티스 설정파일 위치 설정
        factoryBean.setConfigLocation(applicationContext.getResource("classpath:mybatis/configuration.xml"));
        // com.lge.apip.mgmt.ocpo.*.model 패키지 이하의 model 클래스 이름을 짧은 별칭으로 등록
        factoryBean.setTypeAliasesPackage("com.lge.apip.mgmt.ocpo.policy.model");
        // META-INF/mybatis/mappers 패키지 이하의 모든 XML을 매퍼로 등록
        factoryBean.setMapperLocations(applicationContext.getResources("classpath:mybatis/mappers/**/*.xml"));
        return factoryBean;
    }

    /**
     * 마이바티스 {@link org.apache.ibatis.session.SqlSession} 빈을 등록한다.
     *
     * SqlSessionTemplate은 SqlSession을 구현하고 코드에서 SqlSession를 대체하는 역할을 한다.
     * 쓰레드에 안전하게 작성되었기 때문에 여러 DAO나 매퍼에서 공유 할 수 있다.
     */
    @Bean
    public SqlSessionTemplate sqlSession(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
 
     
}

DB config설정
DatabaseConfig.java
package com.example.config;

/**
 * TODO DB설정 설정 처리
 *
 * @author mike Ryu
 * @date 2015. 3. 09
 * @version 1.0
 */
@Configuration
@PropertySource("classpath:jdbc.properties")
@EnableTransactionManagement
public class DatabaseConfig {
    @Autowired private Environment env;
   
    @Bean
    public DataSource dataSource() {
        BasicDataSource dataSource = new BasicDataSource();    
        dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
        dataSource.setUrl(env.getProperty("spring.datasource.url"));
        dataSource.setUsername(env.getProperty("spring.datasource.username"));
        dataSource.setPassword(env.getProperty("spring.datasource.password"));
        return dataSource;
    }
 

    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
 
}


AppContext.java
@Import 어노테이션을 이용하여 해당 Context추가

@Import({
CommonContext.class,
MessageContext.class,
//RestContext.class,
DatabaseConfig.class,
MyBatisContext.class,
ValidatorContext.class,
EhcacheContext.class
// QuartzConfig.class,
// RabbitMqConfig.class
})

댓글 없음:

댓글 쓰기