在哪里放置组件扫描

时间:2017-10-05 15:25:59

标签: spring spring-mvc

我有带完整注释的spring mvc应用程序。添加@componentScan的最佳位置在哪里?让我知道这些推荐的任何内容

  1. 扩展AbstractAnnotationConfigDispatcherServletInitializer?
  2. 的类
  3. 扩展WebMvcConfigurationSupport的类
  4. 扩展WebSecurityConfigurerAdapter的类
  5. 我在没有安全保障的情况下进入2并且工作正常。当我添加安全性时,我遇到安全配置无法找到userdetails服务的问题。然后我搬到了3。 我发现了安全性方面的其他问题,并将代码重新归结为null而不是  getRootConfigClasses()中的securityconfig对象。然后我找到了找不到控制器的问题。我能够修复它以将组件扫描放入2.

    我只是想知道任何链接以及它是如何工作的。是否可以将@componentscan放入所有这3个中?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

这取决于您项目的包树以及您要扫描的内容。如果您想使用以下注释扫描所有带注释的类:@Configuration, @Component, @Repository, etc...@ComponentScan放在包树的顶部。

您还可以使用basePackages属性指定开始扫描的位置。

假设您有一个像这样组织的应用程序包:

com.app.configcom.app.config.webcom.app.servicescom.app.web.controllers

如果要扫描所有带注释的类,请在@ComponentScan包中将带有com.app的类注释掉。

如果您只想扫描控制器,请添加@ComponentScan(basePackages="com.app.web.controllers")

由你来决定。