我对这些注释感到困惑,因为我对Spring很新。 我试图在谷歌上得到它并找到了许多答案,但仍然,我没有得到清晰度。我知道@Component是@Repository,@ Service和@Controller的超级注释,但我仍然怀疑何时使用@Component以及何时使用@ComponentScan任何人都可以帮助我清楚地了解这两个注释,以及两者的区别。
答案 0 :(得分:1)
使用注释@ComponentScan,您可以告诉Spring您的Spring管理组件在哪里。这些Spring-Managed组件可以使用@ Repository,@ Service,@ Controller和ofcourse @Component进行注释。
例如 - 假设您的弹簧管理组件位于2个包com.example.test1和com.example.test2中。然后你的componentScan会是这样的
@ComponentScan(basePackages="com.example.test1","com.example.test2")
OfCourse注释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");
}
}
按照上面的示例,在组件扫描期间,它将被拾取并添加到应用程序上下文中。
希望这能使事情变得清晰:)
答案 1 :(得分:0)
简单来说, @ComponentScan扫描在基础包下指定的所有类文件,即使用@ Component,@ Repository,@ Service和@Controller在任何带注释的java文件中搜索此包下的文件,如果找到任何这些文件,它会将其注册到豆制品厂。
在XML文件中编写所有内容是一件痛苦的事情,你需要指定每个类的内容,如果是服务或控制器,那么Annotation就会出现在图片中以避免这种情况......在内部,它会执行同样的事情就好像你写了一个提到什么是
的xml文件