source

컨텍스트에서의 여러 패키지: component-scan, spring config

factcode 2022. 8. 25. 23:37
반응형

컨텍스트에서의 여러 패키지: component-scan, spring config

의 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:

다음 접근법이 맞습니다.

<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" /> 

주석 접근법

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

여러 기본 패키지를 추가할 수 있지만(axtavt의 답변 참조), 기본 패키지 내에서 검색된 내용을 필터링할 수도 있습니다.

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

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

또 다른 일반적인 주석 접근법:

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

응답이 늦었지만 주석 기반 접근 방식을 사용하여 여러 패키지를 제공하려면 다음과 같이 사용할 수 있습니다.

@ComponentScan({"com.my.package.one","com.my.package.subpackage.two","com.your.package.supersubpackage.two"})

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

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

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

예를 들어 "com.abc" 패키지가 있고 패키지에 여러 개의 패키지가 있습니다.

@ComponentScan("com.abc")

언급URL : https://stackoverflow.com/questions/5269450/multiple-packages-in-contextcomponent-scan-spring-config

반응형