我对这些注解有些困惑,因为我是Spring的新手。我试图在谷歌上找到它,找到了很多答案,但我仍然不明白。我知道@Component是@Repository,@Service和@Controller的超级注解,但是我仍然不确定什么时候使用@ComponentScan,什么时候使用@ComponentScan可以帮助我清楚地理解这两个注解,以及它们的区别是什么。
发布于 2018-05-28 12:35:45
使用注解@ComponentScan,您可以告诉Spring您的Spring管理的组件位于何处。这些Spring管理的组件可以使用@Repository、@Service、@Controller和@Component进行注释。
例如,假设您的spring管理的组件位于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管理的组件的通用注释。例如,如果您在com.example.test1包中创建了一个名为Testing的类,并使用Spring @Component进行注释。
@Component
Class Testing
{
public Testing()
{
}
public void doSomething()
{
System.out.println("do something");
}
}按照上面的示例,在组件扫描期间,它将被拾取并添加到应用程序上下文中。
希望这能让事情变得更清楚:)
发布于 2018-05-28 12:41:12
简单地说,@ComponentScan扫描在基包下指定的所有类文件,即在这个包下的文件中搜索任何带有@Component、@Repository、@Service和@Controller的注释java文件,如果找到它们中的任何一个,它会将其注册到bean工厂中。
在XML文件中编写所有内容是一件很痛苦的事情,你必须指定每个类是什么,如果它是一个服务或控制器,那么注释就出现在图片中,以避免this...Internally它做的事情就像你写了一个xml文件,其中提到了什么是什么
https://stackoverflow.com/questions/50558563
复制相似问题