아이디어가 생기면 언제든 개발에 들어가기 위해 간단한 테스트 프로젝트를 기본 셋팅을 해보는데...
셋팅 중에 '내가 정말 지금까지 Spring boot를 제대로 사용하지 못했구나'라고 생각들게 한 정보가 있어 공유해보려 한다.
지금까지 본인은 새로운 Spring boot 프로젝트를 셋팅할 때 mybatis를 사용했는데
mybatis를 사용하려면 프로젝트 내에 mapper 파일 위치를 셋팅을 해줘야한다.
헌데 지금까지 본인은 mapper 위치를 등록하기 위해서 TransactionConfig.java 파일을 생성해서
@Bean
public SqlSessionFactory mainMybatisSqlSessionFactory(
@Qualifier("mainDataSource") DataSource mainDataSource,
ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(mainDataSource);
sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:com/thecar/testproject/**/*.xml"));
Resource myBatisConfig = new PathMatchingResourcePatternResolver().getResource("classpath:mybatis-config.xml"); // mybatis - camel로 그대로 가져오기
sqlSessionFactoryBean.setConfigLocation(myBatisConfig);
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject();
// sqlSessionFactory.getConfiguration().setCallSettersOnNulls(true);
return sqlSessionFactoryBean.getObject();
}
위 코드에서
sqlsessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:com/thecar/testproject/**/*.xml"));
이렇게 Bean을 등록함으로써 프로젝트가 빌드가 될 시에 mapper의 위치를 bean으로 등록 하고있었는데...
정말 멍청했다...
이제 더 현명한 방법으로 mapper의 위치를 등록하는 방법을 알아보자.
우선 본인의 프로젝트는 maven 프로젝트이다.
pom.xml로 이동하여 mybatis-spring-boot-starter 를 dependency 시켜준다.
(만약 프로젝트 생성시에 mybatis를 선택했다면 이미 dependency가 존재할 수도 있다.)
(pom.xml을 수정했다면 maven update는 습관처럼 하자)
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
이후 application-properties 파일로 와서
mybatis.mapper-location=classpath:com/thecar/testproject/**/*.xml
이와 같은 딱 한줄이면 프로젝트 내에 mapper 파일의 위치를 등록할 수 있다.
(위치는 본인 프로젝트에 맞게)
이렇게하면 com/thecar/testproject 아래에 있는 패키지에 모든 .xml 파일들을 mapper로 인식하겠다는 얘기다.
왜 지금까지 이렇게 간단한걸 복잡하게 하고있었을까 생각해보면 회사에서 매번 새로운 프로젝트를 만들때 기존에 만들어진 프로젝트를 그대로 가져와서 시작했기 때문인 거 같다.
애초에 create new project를 해본 기억이 별로 없다.
앞으론 새로운 프로젝트에 들어갈 때 왠만하면 create new project를 해서 하나하나 해당 프로젝트에 맞는 셋팅을 하고 개발을 해야겠다.
'Web > Spring' 카테고리의 다른 글
맨땅에 Spring Batch - Meta Table (0) | 2024.01.16 |
---|---|
맨땅에 Spring Batch - 설정 (0) | 2024.01.16 |
맨땅에 Spring Batch (0) | 2024.01.16 |
Spring Security녀석을 만났다. (0) | 2022.07.27 |
스프링 스케쥴러란 녀석을 만났다. (0) | 2022.07.27 |