3

spring-application-context.xml에서 bean 정의를 읽으려는 경우 web.xml 파일에서이 작업을 수행합니다. 경우spring-application-context.xml과 AnnotationConfigWebApplicationContext를 봄 mvc에서 읽는 방법

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/applicationContext.xml 
    </param-value> 
</context-param> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

내가 자바 구성 클래스 (AnnotationConfigWebApplicationContext)를 통해 빈 정의를 읽고 싶어, 나는 내 응용 프로그램에서 모두 사용하려면 어떻게

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </init-param> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      org.package.MyConfigAnnotatedClass 
     </param-value> 
    </init-param> 
</servlet> 

web.xml을

에서이 작업을 수행 할 것입니다. 구성 xml 파일과 주석이 달린 클래스에서 콩을 읽는 것과 같습니다.

우리가 AppConfigAnnotatedClass를 사용하여 나머지 빈을 인스턴스화/사용하는 동안 xml 파일에서 스프링 빈을로드하는 방법이 있습니까?

이 didnt 한 작업

XML 파일은

@ImportResource(value = {"classpath:some-other-context.xml"}) 
@Configuration 
public class MyConfigAnnotatedClass { 
    @Inject 
    MyBean mybean; 
} 

<bean name="mybean" class="org.somepackage.MyBean"/> 

자바 클래스 수입 자원으로 빈을 정의하지만에서 myBean 값은 항상 호출 할 때 NullPointerException이 당연히 줄 것이다 null의 경우 mybean의 메소드.

답변

4

당신은 <beans> XML 유형의 컨텍스트를 가져 가지고

@ImportResource(value = {"classpath:some-other-context.xml"}) 
@Configuration 
public class MyConfigAnnotatedClass { 
    ... 
} 

@Configuration 클래스 주석을 달 수 있습니다.

다른 방법으로도 똑같이 할 수 있습니다. @Configuration 클래스는 @Component입니다. 패키지가 포함 된 <component-scan>이 있으면 선언 된 모든 bean이 컨텍스트에 추가됩니다. 또는, package 패키지 구조의 이름으로 사용할 수 없습니다

<bean name="myAdditionalConfig" class="org.somepackage.MyConfigAnnotatedClass" /> 

참고 할 수 있습니다.

+0

@Suvasis XML이 주석에 올바르게 표시되지 않을 수 있습니다. 질문을 편집하여 코드로 추가하십시오. –

+0

나는 시도했지만 시도하지 못한 것을 보여주는 내 질문을 편집했습니다. @Configuration 클래스에서 bean을 어떻게 가져 왔는지 말해 줄 수 있습니까? 또는 xml 파일을 어디에 두었습니까? – Suvasis

+0

@Suvasis'MyConfigAnnotatedClass'가'contextConfigLocation' 매개 변수로 지정한 클래스라면, 가지고있는 것은 작동해야합니다. 이'xml' 파일은'ContextLoaderListener'에 의해로드 된 파일과 분리되어 있어야합니다. –