如果Controller有一个@Controller注释,那么对于没有组件扫描的Spring来说,这应该不够吗?

Bow*_*owe 3 java spring spring-mvc

根据Spring文档,要启用带注释的控制器的自动检测,可以在组件中添加组件扫描:

<context:component-scan base-package="org.springframework.samples.petclinic.web"/>
Run Code Online (Sandbox Code Playgroud)

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

如果一个控制器有一个注释已经指明它是什么,那么对于没有组件扫描的Spring来说,这应该不够吗?

ska*_*man 5

Spring怎么会找到这些课程?如果你没有告诉Spring查看某个类或包,那些类将不会被加载,而Spring永远不会找到它们.

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

  • 这不是真的正确.无论是从类加载模型还是从spring开始,都没有限制.base-package属性是可选的,spring会找到没有该属性的类.它甚至可以找到没有配置标记的类.目的是优化:如果您只有注释,框架必须加载所有类以检查注释是否存在,这将是一个重大的开销. (5认同)