복붙노트

[SPRING] 컨텍스트에서 여러 패키지 : 구성 요소 검사, 봄 구성

SPRING

컨텍스트에서 여러 패키지 : 구성 요소 검사, 봄 구성

Spring-servlet.xml 파일에 context : component-scan 요소로 여러 패키지를 추가하려면 어떻게해야합니까?

나는 노력했다.

<context:component-scan base-package="z.y.z.service" base-package="x.y.z.controller" />

<context:component-scan base-package="x.y.z.service, x.y.z.controller" />

<context:component-scan base-package="x.y.z.service" />
<context:component-scan base-package="x.y.z.controller" />

하지만 오류가 발생했습니다 :

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [x.y.z.dao.daoservice.LoginDAO] found for dependency:

해결법

  1. ==============================

    1.다음과 같은 접근 방식이 옳습니다.

    다음과 같은 접근 방식이 옳습니다.

    <context:component-scan base-package="x.y.z.service, x.y.z.controller" /> 
    

    위에 언급 된 패키지에없는 x.y.z.dao.daoservice.LoginDAO에 대한 에러가 발생합니다. 아마도 그것을 추가하는 것을 잊었을 것입니다 :

    <context:component-scan base-package="x.y.z.service, x.y.z.controller, x.y.z.dao" /> 
    
  2. ==============================

    2.여러 개의 기본 패키지를 추가 할 수 있지만 (axtavt의 답변 참조) 기본 패키지 내에서 스캔 한 것을 필터링 할 수도 있습니다.

    여러 개의 기본 패키지를 추가 할 수 있지만 (axtavt의 답변 참조) 기본 패키지 내에서 스캔 한 것을 필터링 할 수도 있습니다.

    <context:component-scan base-package="x.y.z">
       <context:include-filter type="regex" expression="(service|controller)\..*"/>
    </context:component-scan>
    
  3. ==============================

    3.주석 접근법

    주석 접근법

    @ComponentScan({ "x.y.z", "x.y.z.dao" })
    
  4. ==============================

    4.

    <context:component-scan base-package="x.y.z"/>
    

    나머지 패키지는 "x.y.z"의 하위 패키지이기 때문에 작동합니다. 따라서 각 패키지를 개별적으로 언급 할 필요가 없습니다.

  5. ==============================

    5.또 다른 일반적인 Annotation 접근법 :

    또 다른 일반적인 Annotation 접근법 :

    @ComponentScan(basePackages = {"x.y.z"})
    
  6. ==============================

    6.x.y.z가 공통 패키지 인 경우 다음을 사용할 수 있습니다.

    x.y.z가 공통 패키지 인 경우 다음을 사용할 수 있습니다.

    <context:component-scan base-package="x.y.z.*">
    

    x.y.z로 시작하는 모든 패키지를 포함합니다 : x.y.z.controller, x.y.z.service 등

  7. ==============================

    7.예를 들어 당신은 "com.abc"라는 패키지를 가지고 있고 그 안에 여러 개의 패키지가 있습니다.

    예를 들어 당신은 "com.abc"라는 패키지를 가지고 있고 그 안에 여러 개의 패키지가 있습니다.

    @ComponentScan("com.abc")
    
  8. from https://stackoverflow.com/questions/5269450/multiple-packages-in-contextcomponent-scan-spring-config by cc-by-sa and MIT license