Spring: Должен ли я использовать @Service, а затем @Autowired, или @Component AnnotationConfigApplicationContext - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть клиентский класс, который я хочу использовать где угодно. Думаю, синглтон подойдет.

Должен ли я:

Аннотировать мой класс клиента с помощью @Service, а затем @Autowired это где-нибудь, где я хочу?

ИЛИ

Создайте вещь @Configuration, у которой есть метод, у которого есть @Bean, чтобы получить его новый экземпляр, а затем выполните раздражающую вещь new AnnotationApplicationContext(), чтобы получить контекст, затем получить мой клиентский бин от этого?

Мне просто кажется, что вариант 1 намного проще, и он работает, но у меня создается впечатление, что создание Бина - это "более правильный" способ, но я не не понимаю, почему - это определенно не легче. Может кто-нибудь объяснить? Что-то не так с первым вариантом?

Кроме того, любые действительно очень упрощенные объяснения того, что представляют собой базовые c «правила» для этого материала, было бы замечательно, если бы у кого-то это было в рукаве…

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Вы должны пометить свой класс как @Component и @Autowired в клиентском классе.

@Service - это просто специальная форма @Component

Пример

@Component 
Class AUsefullClass {
  void useFullMethod();
}

@Controller
Class MyController {

    @Autowired
    AUsefullClass instnceOfaUsefullClass;

    void anyMethod(){
        instnceOfaUsefullClass.useFullMethod();
    }
}
0 голосов
/ 12 февраля 2020

Если у вас есть jar зависимостей в вашем проекте. Если это не весенний проект, по этому сценарию вам нужно go для @Bean определения в вашем проекте. Вариант 2 - Для этого случая.

Иначе Если это весенний проект и у вас есть контроль (доступ на запись) для этой зависимости, вы можете аннотировать его с помощью @Service и использовать его @Autowired в вашем проекте. Вариант 1 Чехол

...