为什么我们在春天需要componentScan

时间:2017-12-23 18:14:55

标签: spring spring-boot

这个问题可能是微不足道的,但我仍无法在Spring找到@ComponentScan的正当理由或最佳实践

DI只是通过自我注释课程然后我们为什么需要@ComponentScan

对此最好的做法是什么?

1 个答案:

答案 0 :(得分:1)

@ComponentScan告诉Spring你在哪些包中注释了应该由Spring管理的类。

Spring需要知道哪些包包含spring bean,否则你必须在(xml文件)中单独注册每个bean。这是@ComponentScan.

的使用

举一个简单的例子,你有一个类,并在包@Controller中注明了package com.abc.xyz;,你必须告诉spring为这个包扫描Controller类,如果spring没有扫描这个包,然后spring不会将它识别为控制器类。

假设您处理配置文件,

<context:component-scan base-package="com.abc.xyz"> 像这样,

当spring加载xml文件时,此标记将搜索package com.abc.xyz中存在的所有类,因此任何包含@controller, @Repository @Service等的类,如果找到,则spring将注册这些bean工厂中带注释的类。

假设您使用的是春季启动应用程序,

然后使用@SpringBootApplication注释你的spring-boot应用程序。

@SpringBootApplication注释相当于使用@Configuration@EnableAutoConfiguration@ComponentScan及其默认属性。

如果你没有,还有一点;在@ComponentScan中指定基础包名称,
它将从包中扫描@Springbootapplication存在