Java Spring - как настроить среду?

Я создаю приложение с использованием Java Spring, в котором я хотел бы запустить некоторый код настройки среды, прежде чем мое приложение начнет обрабатывать запросы. В этом конкретном примере я использую PayPal Rest SDK и хочу настроить некоторые веб-перехватчики уведомлений для своего приложения. По очевидным причинам я не хочу, чтобы конечная точка вызывалась для настройки веб-перехватчиков после запуска приложения, поэтому размещение ее в моем контроллере, вероятно, не очень хорошая идея, и мне нужна некоторая информация о конфигурации Spring, чтобы настроить ее, поэтому Я не могу поместить это в main (). Я не против (на самом деле, я бы даже предпочел), что приложение вылетает, если не удается создать веб-перехватчики, если это ограничение, которое необходимо учитывать.

Как лучше это сделать?

Спасибо.

Когда я поискал в Интернете «запуск весенней загрузки», среди автоматических предложений был «крючок запуска весенней загрузки». Я бы, наверное, начал с этого и посмотрел, что вам подходит. Есть прослушиватели контекста приложения, инициализирующие bean-компоненты, по крайней мере, пара бегунов и так далее - я предполагаю, что вы не очень усердно искали, потому что это также обсуждается, по крайней мере, в некоторой степени в документации Spring Boot.

Dave Newton 20.09.2018 16:58

"запуск" не было ключевым словом, которое я думал использовать в моем поиске XD

Ertai87 20.09.2018 17:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
78
1

Ответы 1

and I need some Spring configuration information to set it up so I can't put it in main()

Вышеприведенное утверждение не соответствует действительности. Вы можете получить доступ к конфигурации Spring в файле main. Рассмотрим следующий пример.

@SpringBootApplication
public class Main {

    @Autowire
    private MyService service;

    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(InterviewHqApplication.class, args);
        ctx.getBean(Main.class).setup();
    }

    private void setup() {
        service.doStuff();
    }
}

В этом примере метод setup() вызывается после загрузки контекста приложения.

На самом деле есть несколько способов сделать то, что вы пытаетесь сделать. Spring boot также поддерживает использование ApplicationRunner и CommandLineRunner, которые вызывают метод запуска после загрузки контекста приложения в качестве альтернативы тому, что я показал выше. Вы также можете прослушивать ApplicationReadyEvent, и вы можете вызвать @PostConstruct, чтобы выполнить некоторую определенную конфигурацию для bean-компонента после его инициализации.

О, круто. Это лучший способ делать то, что я хочу делать?

Ertai87 20.09.2018 17:35

Я бы не рекомендовал это, это будет работать, но делает тестирование намного сложнее, чем необходимо. baeldung.com/running-setup-logic-on-startup-in-spring ApplicationListeners может подключаться к различным этапам жизненного цикла контекста приложения Spring Spring Boot предоставляет больше, например, ApplicationStartedEvent

Darren Forsythe 20.09.2018 17:42

Это совершенно правильный способ выполнить код после запуска. Надеюсь, это поможет вам начать работу, но вам придется провести немного больше исследований, чтобы решить, что лучше всего подходит для вашего конкретного варианта использования.

The Gilbert Arenas Dagger 20.09.2018 17:44

Другие вопросы по теме