2017-05-11 4 views
0

속성 파일에서 속성을 삽입하려고합니다. 나는 봄 4.3 버전을 사용하고있다. 등록 정보 파일은 src/main/resources 폴더에 있습니다.@Value 속성 주입이 GenericFilterBean에서 작동하지 않습니다. Spring

봄 응용 프로그램 컨텍스트 XML 파일에서
public class SecurityFilter extends GenericFilterBean { 

    @Value("${url.value}") 
    private String url;  

    ...   

    } 

:

<context:property-placeholder location="classpath*:authentication.properties"/> 
<bean id="securityFilter" class="com.example.SecurityFilter"/> 

그러나 web.xml에

나는 필터

<filter> 
    <filter-name>securityFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>securityFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

내 사용자 정의 필터 클래스에 대한 아래의 구성이 서버를 시작하면 Bean을 생성 할 수 없다는 예외가 발생합니다.

Error creating bean with name 'securityFilter': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: 
Could not resolve placeholder 'url.value' in string value "${url.value}" 

답변

0

코드의 절반이 주석이고 절반이 XML입니다. 어노테이션을 완전하게 사용해보십시오. @Component로 클래스를 표시하고 패키지가 앱 서블릿 파일의 컨텍스트 구성 요소 스캐너에 포함되어 있는지 확인하십시오. 특성 파일에 필수 항목이 있는지 확인하고 bean을 명시 적으로 작성할 필요는 없습니다. Uptate : 클래스 경로에 특성 파일이 있는지 확인하십시오.

+0

안녕하세요 Jajikanth, 답장을 보내 주셔서 감사합니다. @Component 주석을 사용하여 클래스에 주석을 달았지만 여전히 동일한 오류가 발생했습니다. 속성을 문자열로 매핑 할 수 없습니다. 문자열 값 "$ {url.value}"에서 자리 표시 자 'url'을 해결할 수 없습니다. – veejay

+0

속성 파일이 클래스 경로에 포함되어 있지 않을 가능성이 있습니다. 그것에 대하여 너는 확신하니? 프로젝트 구조의 스크린 샷을 공유하십시오. 아래 링크에서 내 대답은 더 많은 아이디어를 줄 수 있습니다. 하지만 그것은 Annotation을 사용합니다. http://www.stackoverflow.com/questions/43710016/how-to-use-a-properties-file-in-spring-beans-xml-file/43768787#43768787 – Jajikanth

+0

@Jaijikanth 당신이 맞았습니다. 특성 파일이 클래스 경로에 없습니다. 이제 문제가 해결되고 속성 파일을로드 할 수 있습니다. – veejay

관련 문제