spring - Component-Scan 和 @Component 之间的区别?
问题描述
我对这些注释有点困惑,因为我对 Spring 很陌生。我试图在谷歌上找到它并找到了很多答案,但我仍然没有弄清楚。我知道@Component 是@Repository、@Service 和@Controller 的超级注释,但我仍然怀疑何时使用@Component 以及何时使用@ComponentScan 任何人都可以帮助我清楚地了解这两者注释,以及两者有什么区别。
解决方案
使用注解 @ComponentScan ,您可以告诉 Spring 您的 Spring 管理的组件在哪里。这些 Spring 管理的组件可以使用 @Repository、@Service、@Controller 和当然 @Component 进行注释。
例如 - 假设您的弹簧管理组件位于 2 个包 com.example.test1 和 com.example.test2 中。然后你的 componentScan 会是这样的
@ComponentScan(basePackages="com.example.test1","com.example.test2")
当然,注释 ComponentScan 还有很多其他元素。
您可以在此处阅读有关它们的更多信息 - https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html。
另一方面,@Component 是任何 Spring-Managed 组件的通用注解。例如 - 如果您在包 com.example.test1 中创建一个名为 Testing 的类,并使用 Spring @Component 进行注释。
@Component
Class Testing
{
public Testing()
{
}
public void doSomething()
{
System.out.println("do something");
}
}
按照上面的示例,在组件扫描期间,它将被拾取并添加到应用程序上下文中。
希望这能让事情变得清楚:)
推荐阅读
- c - 向 ps2 键盘发送启用中断 (0xF4) 命令会导致系统崩溃。操作系统开发
- android - 垂直列表视图不像使用 Jetpack compose 的 Lazy 列那样平滑
- php - 如果描述和开始时间和结束时间重叠,则合并数组
- javascript - 如何创建包含可调整大小的 div 的网格 - 永远不会超过主容器的大小?
- reactjs - /*rtl:ignore*/ 不适用于@emotion/core css
- python - 从文件输出读取到 django 中的 html 模板
- python - datetime.strptime 基于正则表达式模式检查
- python - 从具有 JSon 的站点爬取数据
- git - 如何在 azure devops 管道中设置 ssh git url 和私钥
- .net-core - 配置 Log4Net 写入 .net 核心中的多个文件