Spring 如何从DispatcherServlet中包括/排除某些控制器

Spring 如何从DispatcherServlet中包括/排除某些控制器,spring,spring-mvc,Spring,Spring Mvc,我有一个DispatcherServlet,默认情况下使用RequestMappingHandlerMapping查找带有@RequestMapping注释的所有控制器 这很好用,除了它在我的spring上下文中拾取所有控制器,但我只希望它公开某些控制器 有没有一种方法不需要扩展一堆spring类就可以做到这一点 (不幸的是,我的spring上下文必须包含这些额外的控制器,因为它们还提供一些我需要使用java调用的功能,而我目前无法将这些功能拆分)您可以配置include/exclude过滤器来

我有一个
DispatcherServlet
,默认情况下使用
RequestMappingHandlerMapping
查找带有
@RequestMapping
注释的所有控制器

这很好用,除了它在我的spring上下文中拾取所有控制器,但我只希望它公开某些控制器

有没有一种方法不需要扩展一堆spring类就可以做到这一点


(不幸的是,我的spring上下文必须包含这些额外的控制器,因为它们还提供一些我需要使用java调用的功能,而我目前无法将这些功能拆分)

您可以配置include/exclude过滤器来定制类路径扫描。这可以在XML Spring配置或基于Java的
@Configuration
中完成。因此,根据需要排除的
@Controller
注释类的数量,可以将它们列在
assignable
下,也可以使用
regex
过滤器。有关详细信息,请参阅Spring文档部分“使用过滤器自定义扫描”,例如。

请参阅括号中问题的最后一部分-我需要这些类是Spring Bean,因为它们提供其他功能,我只是不希望它们作为控制器公开。啊,我明白了。对不起,错过了那部分。那么,如果不重写一些Spring类,我认为这是不可行的。您可能要做的一个技巧是实现并在
preHandle()
方法中拒绝访问属于您要排除的
@Controller
类的URL。