[Spring] @Resource 에러

yed·2021년 11월 3일
0

NoSuchBeanDefinitionException 어쩌구저쩌구 대충 빈이 없다고 하는 에러가 떴다

@Resource(name ="uploadPath")
private String uploadPath;

controller에 작성한 @Resource를 서버가 못찾아서 생긴 오류같음

근데 나는 bean을 제대로 sevlet-context.xml에 생성했음..!👿 이때 사용한 방식을 그대로 적용했는데 왜일까 찾아보니

내가 생성한 bean은 파일 업로드 리소스인데 시점문제로 인한 에러가 발생함

spring의 시점 상 원래 servlet-context.xml -> component 를 읽게 되어있다

그래야 servlet-context.xml에 있는 bean들을 생성하고나서 component들이 bean을 사용할 수 있는데
나같은 경우 서버가 꼬여서 servlet-context.xml을 읽기전에 혹은 uploadPath bean만 읽히지 못한채 controller가 먼저 실행되어 발생한 에러같음

<servlet-context.xml>

<beans:bean id="uploadPath" class="java.lang.String">
	<beans:constructor-arg value="C:\\Study\\FileUploadTest">
	</beans:constructor-arg>
</beans:bean>

해결책

sevlet-context.xml의 bean이 제대로 생성되지 않는다면 spring의 시점에서 sevlet-context.xml보다 먼저 실행되는 root-context.xml에다 bean을 만들어주면 된다.

<root-context.xml>

<bean id="uploadPath" class="java.lang.String">
	<constructor-arg value="C:\\Study\\FileUpload">
	</constructor-arg>
</bean>

잘 돌아가는군

profile
6개월 국비과정 기록하기

0개의 댓글