Spring @ComponentScan'的危险;用过滤器过滤所有包

Spring @ComponentScan'的危险;用过滤器过滤所有包,spring,Spring,我现在正在开发一个概念应用程序,其中我想使用组件扫描来提取类路径上任何带有特定自定义Spring元注释的所有类。我的注释如下所示: @Target(value=ElementType.TYPE) @Retention(value=RetentionPolicy.RUNTIME) @Documented @Controller public @interface PluggableController { String value(); // Allows for the setting

我现在正在开发一个概念应用程序,其中我想使用组件扫描来提取类路径上任何带有特定自定义Spring元注释的所有类。我的注释如下所示:

@Target(value=ElementType.TYPE)
@Retention(value=RetentionPolicy.RUNTIME)
@Documented
@Controller
public @interface PluggableController {
    String value(); // Allows for the setting of the @Controller bean name
}
在我的ApplConfig类中,我有:

@ComponentScan(basePackages = {"**"}, includeFilters = {@ComponentScan.Filter(type=FilterType.ANNOTATION, value=PluggableController.class)})
其想法是,用户将使用我的自定义@controller创建一个控制器,它将被Spring自动拾取并像其他Spring控制器一样处理。然而,我不想强迫人们使用严格的类路径结构


我很清楚扫描所有类路径的危险性(启动速度、拾取不好的依赖项等),但问题是我是否通过限制/过滤特定注释来减轻这些危险?我并不过分关注启动速度,主要关注的是遇到我没有预料到的问题。

您无法通过限制/过滤特定注释来减轻这些危险。 Spring将扫描类路径中所有JAR的所有类,并检查每个JAR的注释

大多数插件系统要求您将插件代码放入定义良好的位置,因此我强烈建议您在这里也这样做