에러 내역

더보기
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'int'; nested exception is java.lang.NumberFormatException: For input string: "${service-config의 특성 key}"
	at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:77)
	at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:54)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1085)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583)
	... 31 more
Caused by: java.lang.NumberFormatException: For input string: "${service-config의 특성 key}"
	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
	at java.lang.Integer.parseInt(Integer.java:569)
	at java.lang.Integer.valueOf(Integer.java:766)
	at org.springframework.util.NumberUtils.parseNumber(NumberUtils.java:208)
	at org.springframework.beans.propertyeditors.CustomNumberEditor.setAsText(CustomNumberEditor.java:113)
	at org.springframework.beans.TypeConverterDelegate.doConvertTextValue(TypeConverterDelegate.java:470)
	at org.springframework.beans.TypeConverterDelegate.doConvertValue(TypeConverterDelegate.java:443)
	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:200)
	at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:126)
	at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:61)
	... 35 more

상황

service-config.propertie의 내역을 ServiceConfig class로 불러 들여서 사용하는 상황이었고

해당 파라미터타입에 String, int가 있는 상황이었다.

원인

context 파일이 applicaion-context.xml 와 servlet-context.xml 두가지가 있었는데

placeholder bean은 application-context.xml에 적혀있었는데

servlet-context.xml의 base 패키지 범위에도 ServiceConfig가 들어가서 servlet-context에서 bean으로 등록할 때 placeholder 부분을 빈 문자값 ""로 읽어 오게 되어서

int 에 변환 할 때 타입 변환 Exception이 떨어지게 된 듯하다.

해결

servlet-context.xml 에서

변경 전
<context:component-scan base-package="com.text.spring" />
변경 후
<context:component-scan base-package="com.text.spring.web" />

base-package에 ServiceConfig가 들어가지 않도록 루트 경로를 잡아준다.

블로그 이미지

uchacha

개발자 일지

,