Mybatis 적용 중 Bean 등록문제
- 작성자 :
- 김*규
- 작성일 :
- 2025-04-09 13:20:15
- 조회수 :
- 78
- 구분 :
- 적용지원(기술지원)
- 진행상태 :
- 완료
Q
package framework.egov.config;
생략
@RequiredArgsConstructor
@Configuration
public class EgovConfigAppMapper {
private final Environment env;
private final DataSource dataSource;
private String dbType;
private String mapperPath;
@PostConstruct
void init() {
dbType = env.getProperty("Globals.database.DbType");
mapperPath = env.getProperty("Globals.mapper.path");
}
@Bean
@Lazy
public DefaultLobHandler lobHandler() {
return new DefaultLobHandler();
}
@Bean
public SqlSessionFactoryBean sqlSession() { 생략 }
@Bean
public MapperConfigurer mapperConfigurer() {
MapperConfigurer mapperConfigurer = new MapperConfigurer();
mapperConfigurer.setBasePackage("framework.egms");
return mapperConfigurer;
}
@Bean
public SqlSessionTemplate egovSqlSessionTemplate(SqlSessionFactory sqlSession) {
return new SqlSessionTemplate(sqlSession);
}
}
해당 코드에 MapperConfigurer Bean을 등록하려고 코드를 작성하면 아래의 오류가 발생합니다. ( basePackage 경로를 Mapper 인터페이스가 정확히 있는 경로, 그 상위 경로 모두 같은 문제가 발생합니다. )
[ERROR] 2025-04-09 13:19:01.456 : o.s.b.SpringApplication - Application run failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [framework.EGmsFrameworkApplication]; nested exception is java.io.FileNotFoundException: class path resource [framework/egov/config/EgovConfigAppMapper.class] cannot be opened because it does not exist
생략
@RequiredArgsConstructor
@Configuration
public class EgovConfigAppMapper {
private final Environment env;
private final DataSource dataSource;
private String dbType;
private String mapperPath;
@PostConstruct
void init() {
dbType = env.getProperty("Globals.database.DbType");
mapperPath = env.getProperty("Globals.mapper.path");
}
@Bean
@Lazy
public DefaultLobHandler lobHandler() {
return new DefaultLobHandler();
}
@Bean
public SqlSessionFactoryBean sqlSession() { 생략 }
@Bean
public MapperConfigurer mapperConfigurer() {
MapperConfigurer mapperConfigurer = new MapperConfigurer();
mapperConfigurer.setBasePackage("framework.egms");
return mapperConfigurer;
}
@Bean
public SqlSessionTemplate egovSqlSessionTemplate(SqlSessionFactory sqlSession) {
return new SqlSessionTemplate(sqlSession);
}
}
해당 코드에 MapperConfigurer Bean을 등록하려고 코드를 작성하면 아래의 오류가 발생합니다. ( basePackage 경로를 Mapper 인터페이스가 정확히 있는 경로, 그 상위 경로 모두 같은 문제가 발생합니다. )
[ERROR] 2025-04-09 13:19:01.456 : o.s.b.SpringApplication - Application run failed
org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [framework.EGmsFrameworkApplication]; nested exception is java.io.FileNotFoundException: class path resource [framework/egov/config/EgovConfigAppMapper.class] cannot be opened because it does not exist
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 : 4.3
- JDK(JRE) 정보 : 1.8
- WAS 정보 : Spring Boot Tomcat Embeded
- DB 정보 : PostgreSQL
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크 센터입니다.
클래스 파일을 찾을 수 없다는 로그로 봤을 때
빌드 과정에서 해당 클래스가 누락되었을 가능성이 있습니다.
패키지 경로로 인한 컴포넌트 스캔 범위를 우선적으로 살펴보시기 바라며
프로젝트를 클린 빌드하여 모든 클래스가 정상적으로 빌드 되는지 확인해 보시기 바랍니다.
또 한 가지 가능성으로는
다른 클래스나 리소스로 인해 의존성이 발생할 경우
클래스 로딩 순서에 따라 빈을 올바르게 정의하지 못할 수 있으므로
MapperConfigurer 빈을 별도의 클래스로 분리하여
해당 빈의 로딩 시점을 조절해 보실 수 있습니다.
감사합니다.
표준프레임워크 센터입니다.
클래스 파일을 찾을 수 없다는 로그로 봤을 때
빌드 과정에서 해당 클래스가 누락되었을 가능성이 있습니다.
패키지 경로로 인한 컴포넌트 스캔 범위를 우선적으로 살펴보시기 바라며
프로젝트를 클린 빌드하여 모든 클래스가 정상적으로 빌드 되는지 확인해 보시기 바랍니다.
또 한 가지 가능성으로는
다른 클래스나 리소스로 인해 의존성이 발생할 경우
클래스 로딩 순서에 따라 빈을 올바르게 정의하지 못할 수 있으므로
MapperConfigurer 빈을 별도의 클래스로 분리하여
해당 빈의 로딩 시점을 조절해 보실 수 있습니다.
감사합니다.