Сообщения

Показаны сообщения с ярлыком "Spring Boot SpringApplication"

Spring Boot: конфигурация, свойства профиля

Изображение
В дополнение к файлам application.properties свойства профиля также могут быть определены с использованием следующего соглашения об именах: application-{profile}.properties. Environment имеет набор профилей по умолчанию (по умолчанию [default]), которые используются, если активные профили не установлены. Другими словами, если никакие профили явно не активированы, тогда загружаются свойства из application-default.properties. Специфичные для профиля свойства загружаются из тех же мест, что и стандартные application.properties, причем специфичные для профиля файлы всегда переопределяют неспецифические, независимо от того, находятся ли специфичные для профиля файлы внутри или вне упакованного jar-файла. Если указано несколько профилей, применяется стратегия последний побеждает. Например, профили, указанные в свойстве spring.profiles.active, добавляются после профилей, настроенных через SpringApplication API, и поэтому имеют приоритет. Если вы указали какие-либо файлы в spring.config.loc...

Spring Boot: SpringApplication, функции администратора

Изображение
Для приложения можно включить функции, связанные с администратором, указав свойство spring.application.admin.enabled. Это предоставляет SpringApplicationAdminMXBean на платформе MBeanServer. Вы можете использовать эту функцию для удаленного администрирования вашего приложения Spring Boot. Эта функция также может быть полезна для любой реализации оболочки сервиса. Если вы хотите узнать, на каком HTTP-порту работает приложение, получите свойство с ключом local.server.port. Читайте также: Spring Boot: класс SpringApplication Spring Boot: SpringApplication, доступ к аргументам приложения Spring Boot: события приложения и слушатели

Spring Boot: SpringApplication, выход из приложения

Изображение
Каждое SpringApplication регистрирует перехватчик завершения работы с JVM, чтобы обеспечить корректное закрытие ApplicationContext при выходе. Можно использовать все стандартные обратные вызовы жизненного цикла Spring (такие как интерфейс DisposableBean или аннотация @PreDestroy). Кроме того, bean-компоненты могут реализовывать интерфейс org.springframework.boot.ExitCodeGenerator, если они хотят вернуть определенный код завершения при вызове SpringApplication.exit(). Затем этот код завершения можно передать в System.exit(), чтобы вернуть его в виде кода состояния, как показано в следующем примере: @SpringBootApplication public class ExitCodeApplication { @Bean public ExitCodeGenerator exitCodeGenerator() { return () -> 42; } public static void main(String[] args) { System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApplication.class, args))); } } Кроме того, интерфейс ExitCodeGenerator может быть реализован исключениями. П...

Spring Boot: использование ApplicationRunner или CommandLineRunner

Изображение
Если вам нужно запустить какой-то определенный код после запуска SpringApplication, вы можете реализовать интерфейсы ApplicationRunner или CommandLineRunner. Оба интерфейса работают одинаково и предлагают один метод run, который вызывается непосредственно перед завершением SpringApplication.run(…). Интерфейсы CommandLineRunner предоставляют доступ к аргументам приложения в виде простого строкового массива, тогда как ApplicationRunner использует ApplicationArguments . В следующем примере показан CommandLineRunner с методом run: import org.springframework.boot.*; import org.springframework.stereotype.*; @Component public class MyBean implements CommandLineRunner { public void run(String... args) { // Делает что-нибудь... } } Если определены несколько компонентов CommandLineRunner или ApplicationRunner, которые должны вызываться в определенном порядке, вы можете дополнительно реализовать интерфейс org.springframework.core.Ordered или использовать аннотацию org.s...

Spring Boot: SpringApplication, доступ к аргументам приложения

Изображение
Если вам нужен доступ к аргументам приложения, которые были переданы SpringApplication.run(…), вы можете внедрить bean-компонент org.springframework.boot.ApplicationArguments. Интерфейс ApplicationArguments обеспечивает доступ как к необработанным String[] аргументам, так и к разобранным аргументам и аргументам без параметров, как показано в следующем примере: import org.springframework.boot.*; import org.springframework.beans.factory.annotation.*; import org.springframework.stereotype.*; @Component public class MyBean { @Autowired public MyBean(ApplicationArguments args) { boolean debug = args.containsOption("debug"); List files = args.getNonOptionArgs(); // если запускать с "--debug logfile.txt" // тогда debug=true, files=["logfile.txt"] } } Spring Boot также регистрирует CommandLinePropertySource в среде Spring. Это также позволяет вводить отдельные аргументы приложения с помощью аннотации @Value. ...

Spring Boot: использование SpringApplicationBuilder

Изображение
Если вам нужно построить иерархию ApplicationContext (несколько контекстов с отношениями родитель/потомок) или если вы предпочитаете использовать «свободный» API для построения (“fluent” builder API), вы можете использовать SpringApplicationBuilder. SpringApplicationBuilder позволяет объединить несколько вызовов методов и включает родительские и дочерние методы, которые позволяют создавать иерархию, как показано в следующем примере: new SpringApplicationBuilder() .sources(Parent.class) .child(Application.class) .bannerMode(Banner.Mode.OFF) .run(args); Существуют некоторые ограничения при создании иерархии ApplicationContext. Например, веб-компоненты должны содержаться в дочернем контексте, и одна и та же среда используется для родительского и дочернего контекстов. Читайте также: Spring Boot: класс SpringApplication Spring Boot: настройка баннера Spring Boot: настройка SpringApplication

Spring Boot: настройка SpringApplication

Изображение
Если настройки SpringApplication вам не по вкусу, вы можете вместо этого создать локальный экземпляр и настроить его. Например, чтобы отключить баннер, вы можете написать: public static void main(String[] args) { SpringApplication app = new SpringApplication(MySpringConfiguration.class); app.setBannerMode(Banner.Mode.OFF); app.run(args); } Аргументы конструктора, передаваемые SpringApplication, являются источниками конфигурации для bean-компонентов Spring. В большинстве случаев это ссылки на классы @Configuration, но они также могут быть ссылками на конфигурацию XML или на пакеты, которые следует сканировать. Также можно настроить SpringApplication с помощью файла application.properties. Полный список параметров конфигурации в Javadoc SpringApplication . Читайте также: Spring Boot: класс SpringApplication Spring Boot: настройка баннера Spring Boot: ленивая инициализация (Lazy Initialization)