Государственная весенняя служба - PullRequest
0 голосов
/ 04 марта 2020

Мой код, как показано ниже. Здесь я использую локальную переменную для хранения данных и возврата их в метод контроллера. Всякий раз, когда запускается запланированный метод пост-конструкции, я использую временный список. Но я где-то читал, что весеннее служение не должно иметь государства. Какой лучший способ сделать это?

@Service
public class AppService
{
    private List<String> responseList = new ArrayList<>();

    @PostConstruct
    @Scheduled(every 2hours)
    public void getData()
    {
        //get data from another third party REST API endpoint and populate a temporary list

        //Once all data is fetched set temp list as mainList
        this.responseList = tempList;
    }

    public List<String> getResponse()
    {
        return this.responseList;
    }
}

1 Ответ

0 голосов
/ 04 марта 2020

Shahul,

Это зависит от двух факторов: (a) как служба будет использоваться (т.е. развернута и эксплуатироваться) и (b) где данные для responseList собираются исходить от.

Во-первых, как сказал @Michael, вы всегда должны ссылаться на свои источники. В Stackoverflow он может помочь людям увидеть, если вы прочитали неверную или устаревшую информацию или просто неправильно поняли источник, и, в конечном итоге, помогут вам более эффективно. Действительно, https://spring.io/microservices состояний (emph. Mine):

Небольшая не имеющая состояния природа микросервисов делает их идеальными для горизонтальное масштабирование.

Итак, вот ключ к первому фактору: если вы хотите создать микросервис и масштабировать его, то лучше не иметь состояния. Тем не менее, @Service в Spring определяет Service Component , и это javadocs состояние:

Указывает, что аннотированный класс является "Service", первоначально определенным от Domain-Driven Design (Evans, 2003) как «операция, предлагаемая в качестве интерфейса, который стоит отдельно в модели, без инкапсулированного состояния».

Если вы изучаете javadocs для других @Component потомки, вы увидите, что @Repository имеет следующее описание:

Указывает, что аннотированный класс является «репозиторием», изначально определенным в Domain-Driven Design (Evans, 2003) как «механизм» для инкапсулирующего хранилища , поиска и поведения поиска, которое эмулирует коллекцию объектов ".

Я рекомендую вам прочитать больше о репозиториях и Spring Persistence в целом. Ответ для фактора B скажет вам, какой метод сохранения используется.

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