Java 上下文中有多个包:组件扫描、spring配置

Java 上下文中有多个包:组件扫描、spring配置,java,spring,component-scan,Java,Spring,Component Scan,如何在context:component scanelement中的spring-servlet.xml文件中添加多个包 我试过了 <context:component-scan base-package="z.y.z.service" base-package="x.y.z.controller" /> 您可以添加多个基本包(请参见),但也可以在基本包内: <context:component-scan base-package="x.y.z"> <con

如何在
context:component scan
element中的spring-servlet.xml文件中添加多个包

我试过了

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

您可以添加多个基本包(请参见),但也可以在基本包内:

<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.service, x.y.z.controller" /> 

由于其余的包是“x.y.z”的子包,因此将起作用。因此,您不需要单独提及每个包。

注释方法

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

另一种通用注释方法:

@ComponentScan(basePackages = {"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等

例如,您有一个包“com.abc”,其中有多个包,您可以使用

@ComponentScan("com.abc")

延迟响应,但要使用基于注释的方法提供多个包,我们可以使用以下方法:


@ComponentScan({“com.my.package.one”、“com.my.package.subpackage.two”、“com.your.package.supersubpackage.two”})

@shams无需提示我,但如果答案正确,您应该将其标记为已接受(单击复选标记),为什么不能添加多个基本包?比如“org.example,com.example”?@Shervin你可以。正如你写的那样。(另请参见预期答案)好的!也许这是另一个原因,但这对我来说并不适用于Portlet的spring mvc…@elcadro一定是因为其他原因,因为这是一个有很好的文档记录和宣传的特性。我不能说相反,因为很多人都在纠正我。我希望我能找到为什么这对我不起作用。。。无论如何谢谢你!即使对于基于注释的配置,它也适用吗?这个答案意味着基本包的成员没有递归,但有:。我建议对答案稍加修改以澄清这一点。我们是否需要强制添加特定的包,或者如果我们只定义顶级包,它可以自动扫描子包?@NikhilSahu-no,这是一个递归扫描(Spring 3>),请链接以获取更多信息:
<context:component-scan base-package="x.y.z"/>
@ComponentScan({ "x.y.z", "x.y.z.dao" })
@ComponentScan(basePackages = {"x.y.z"})
<context:component-scan base-package="x.y.z.*">
@ComponentScan("com.abc")