首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果一个Controller有一个@Controller注解,不需要扫描组件就能满足Spring的需求吗?

如果一个Controller有一个@Controller注解,不需要扫描组件就能满足Spring的需求吗?
EN

Stack Overflow用户
提问于 2010-09-05 05:01:02
回答 3查看 281关注 0票数 3

According to the Spring docs,要启用带注释的控制器的自动检测,请将组件扫描添加到配置中:

代码语言:javascript
运行
复制
<context:component-scan base-package="org.springframework.samples.petclinic.web"/>

我的问题是,为什么这是必要的?

如果控制器已经有了注解来指示它是什么,那么对于Spring来说,不需要扫描组件就足够了吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-05 05:11:57

否则Spring如何找到这些类呢?如果你没有告诉Spring去查看某个类或包,那么这些类就不会被加载,Spring也永远不会找到它们。

这更多的是java类加载模型的限制(如果你可以称之为限制),那么它就是Spring的限制。

票数 5
EN

Stack Overflow用户

发布于 2010-09-05 05:17:53

您只需在配置中添加以下内容:

如果您只将注释放在类上,则框架必须加载所有类以检查注释是否存在。

为了最小化此开销,您必须在配置中放置annotation-config标记。这样,框架就知道它必须检查该配置中的类。

您可以通过使用"base- package“属性指定带注释的类所在的包来帮助框架。

//编辑//

这也解释了the documentation中的注释

备注

< context :annotation-config/>只在定义它的相同应用程序上下文中查找bean上的注释。这意味着,如果您为DispatcherServlet添加了一个WebApplicationContext,那么它只会检查控制器中的@Autowired,而不会检查您的服务。

票数 3
EN

Stack Overflow用户

发布于 2010-09-05 23:58:02

简单地用@Controller注释一个类并不一定意味着您希望它成为Spring上下文的一部分。想象一下,如果这个类是另一个应用程序的一部分,或者是第三方库的一部分,或者是您的系统的一个弃用组件,等等。仅仅因为它在类路径上并不一定意味着您希望它在Spring上下文中作为bean自动实例化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3643994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档