Component-Scan和@Component之间的区别?

时间:2018-05-28 02:58:50

标签: spring annotations

我对这些注释感到困惑,因为我对Spring很新。 我试图在谷歌上得到它并找到了许多答案,但仍然,我没有得到清晰度。我知道@Component是@Repository,@ Service和@Controller的超级注释,但我仍然怀疑何时使用@Component以及何时使用@ComponentScan任何人都可以帮助我清楚地了解这两个注释,以及两者的区别。

2 个答案:

答案 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文件