这个问题可能是微不足道的,但我仍无法在Spring找到@ComponentScan
的正当理由或最佳实践
DI只是通过自我注释课程然后我们为什么需要@ComponentScan
对此最好的做法是什么?
答案 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
存在