Как установить атрибуты универсального класса @Service в Spring Boot? - PullRequest
0 голосов
/ 17 января 2019

Я новичок в Spring Boot, так что мне нужен мой основной вопрос здесь.

Я хочу создать общий @Service класс, который имеет четко определенные методы, которые даже не нужно перезаписывать.

Единственное, что нужно этому классу, это настроить его атрибуты на основе того, какой метод Controller был вызван. По сути, этот класс работает как обработчик Job, которому необходимо настроить некоторые параметры, чтобы его методы могли выполнять то, что они должны вычислять. Задание всегда будет иметь один и тот же рабочий процесс, вызывая методы в одном и том же порядке, но оно будет получать разные результаты в зависимости от параметров / атрибутов, которые оно получает, которые, как я уже говорил, определяются методами контроллера.

Единственным атрибутом, который у него есть, кроме тех, которые регулируют рабочий процесс задания, является объект @Repository с автопроводкой, который сохраняет результаты задания в базе данных.

Может быть, я мог бы просто создать экземпляр объекта Job Handler и вызвать конструктор с параметрами, которые мне нужны для работы, но я не знаю, каков «Spring» способ сделать это, учитывая, как Spring работает с внедрением зависимостей и Мне нужен объект @Repository, встроенный в службу Job Handler.

Я был бы очень признателен, если бы кто-нибудь смог написать пример кода / примера, чтобы я мог понять, как это можно сделать с помощью Spring Boot, чтобы мне не приходилось дублировать код или классы обслуживания.

1 Ответ

0 голосов
/ 17 января 2019

Путь Spring для этого случая будет состоять в создании Bean-компонента вашего JobHandler, в который вы вводите необходимые зависимости, такие как ваш репозиторий:

@Configuration
class MyConfiguration {

    @Bean
    MyJobHandler myJobHandler(MyRepository myRepository) {
        return new MyJobHandler (myrepository);
    }

}

В качестве альтернативы, если вам не нужен класс конфигурации, вы можете объявить ваш JobHandler как Компонент и добавить хранилище в конструктор:

@Component
class MyJobHandler {

    private MyRepository myRepository;

    public MyJobHandler myJobHandler(MyRepository myRepository) {
        this.myRepository = myRepository;
    }

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