본문 바로가기

Various Error

[STS/SpringBoot/Mybatis] Invalid value type for attribute 'factoryBeanObjectType': java.lang.String

발생한 에러
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'boardMapper' defined in file [D:~~~~~\mapper\BoardMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:858) ~[spring-beans-6.2.0.jar:6.2.0]
at org.springframework.beans.factory.support.AbstractBeanFactory.getType(AbstractBeanFactory.java:742) ~[spring-beans-6.2.0.jar:6.2.0]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAnnotationOnBean(DefaultListableBeanFactory.java:765) ~[spring-beans-6.2.0.jar:6.2.0]
at org.springframework.boot.sql.init.dependency.AnnotationDependsOnDatabaseInitializationDetector.detect(AnnotationDependsOnDatabaseInitializationDetector.java:36) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.detectDependsOnInitializationBeanNames(DatabaseInitializationDependencyConfigurer.java:152) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.postProcessBeanFactory(DatabaseInitializationDependencyConfigurer.java:115) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:363) ~[spring-context-6.2.0.jar:6.2.0]
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:197) ~[spring-context-6.2.0.jar:6.2.0]
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:791) ~[spring-context-6.2.0.jar:6.2.0]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:609) ~[spring-context-6.2.0.jar:6.2.0]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.4.0.jar:3.4.0]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.4.0.jar:3.4.0]
at kr.co.gmcorp.GmcorpApplication.main(GmcorpApplication.java:11) ~[classes/:na]
에러 해결 시도
  • Mybatis를 적용하던 중 위와 같은 에러를 마주하게 됨
  • ChatGPT는 다음과 같이 해결하라고 제시를 하였으나 해결 실패

1. mybatis-config.xml 파일의 <mappers> 태그 안에 <mapper resource="xml 파일 경로"> 또는 <package name="mapper패키지 경로">를 삭제

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
 <configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
<!--     <mappers> -->
<!--         <mapper resource="mybatis/mapper/boardMapper.xml"/> -->
<!--         <package name="kr.co.gmcorp.mapper" /> -->
<!--     </mappers> -->
</configuration>

2. @SpringBootApplication 클래스에 @MapperScan을 추가

@SpringBootApplication
@MapperScan("kr.co.gmcorp.mapper")
public class GmcorpApplication {
	public static void main(String[] args) {
		SpringApplication.run(GmcorpApplication.class, args);
	}
}

해결
  • 구글링에서 찾아보니 문제가 발생한 원인은 버전 충돌이라고 함
  • 나의 스프링 버전은 3.4.0 버전이였고 mybatis 의존성은 아래와 같았음
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.1</version>
</dependency>
  • 하지만, 스프링부트 3.2 버전 이상은 Mybatis 스타터 버전을 Spring Boot 버전에 맞게 수정해야한다고 함
  • 다음과 같이 3.0.1 버전 → 3.0.3 버전으로 변경하여 해결 완료
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

 

https://jjh-blog.tistory.com/241

 

[Springboot][error 해결] java.lang.IllegalArgumentException: Invalid value type for attribute 'factoryBeanObjectType': java.la

개발도중 mybatis를 사용하려고 dependencies를 추가하니 다음과 같은 에러가 발생했다. java.lang.IllegalArgumentException: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String Spring 3.2.3을 사용중이고, my

jjh-blog.tistory.com