Разница между Component-Scan и @Component? - PullRequest
0 голосов
/ 28 мая 2018

Я немного озадачен этими аннотациями, так как я очень новичок в Spring.Я попытался получить это на Google и нашел много ответов, но все же, я не получил ясность.Я узнал, что @Component - это супераннотация для @Repository, @Service и @Controller, но я все еще сомневаюсь, когда использовать @Component, а когда использовать @ComponentScan. Может ли кто-нибудь помочь мне получить четкое представление об этих обоих?аннотации, и в чем разница в обоих.

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Проще говоря, @ComponentScan сканирует все файлы классов, указанные в базовом пакете, т.е. ищет файлы в этом пакете для любых аннотированных java-файлов с помощью @Component, @Repository, @Service и @Controller и, если этонайдя любой из них, он зарегистрирует его в фабрике бинов.

Было сложно записать все в XML-файл, где вам нужно было указать, каким был каждый класс, если это был Сервис или Контроллер,поэтому в изображение вошла аннотация, чтобы избежать этого ... Внутренне это делает то же самое, как если бы вы написали XML-файл, в котором упоминалось, что было

0 голосов
/ 28 мая 2018

Используя аннотацию @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")

. Конечно, у аннотации ComponentScan есть много других элементов.

Подробнее о них можно прочитать здесь - https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html.

С другой стороны, @Component - это общая аннотация для любого Spring-Managed компонента.Например, если вы создаете класс с именем Testing внутри пакета com.example.test1 и аннотируете Spring @ Component.

             @Component    
             Class Testing    
     {

             public Testing()
            {
            }

            public void doSomething()
           {
            System.out.println("do something");
           }

    }

В соответствии с приведенным выше примером, во время сканирования компонентов он будет выбран и добавлен вконтекст приложения.

Надеюсь, это прояснит ситуацию:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...