«1. Введение

Spring Boot CLI — это абстракция командной строки, которая позволяет нам легко запускать микросервисы Spring, выраженные в виде скриптов Groovy. Он также обеспечивает упрощенное и улучшенное управление зависимостями для этих служб.

В этой короткой статье кратко рассматривается, как настроить Spring Boot CLI и выполнить простые команды терминала для запуска предварительно настроенных микросервисов.

В этой статье мы будем использовать Spring Boot CLI 2.0.0.RELEASE. Новейшую версию Spring Boot CLI можно найти на Maven Central.

2. Настройка Spring Boot CLI

Один из самых простых способов настроить Spring Boot CLI — использовать SDKMAN. Инструкции по настройке и установке SDKMAN можно найти здесь.

После установки SDKMAN выполните следующую команду для автоматической установки и настройки Spring Boot CLI:

$ sdk install springboot

Чтобы проверить установку, выполните команду:

$ spring --version

Мы также можем установить Spring Boot CLI, скомпилировав из исходного кода, а пользователи Mac могут использовать готовые пакеты из Homebrew или MacPorts. См. официальные документы для всех вариантов установки.

3. Общие команды терминала

Spring Boot CLI предоставляет несколько полезных готовых команд и функций. Одной из самых полезных функций является Spring Shell, который оборачивает команды необходимым префиксом spring.

Чтобы запустить встроенную оболочку, мы запускаем:

spring shell

Отсюда мы можем напрямую вводить нужные команды без предварительного ожидания ключевого слова spring (поскольку мы сейчас находимся в оболочке spring).

Например, мы можем отобразить текущую версию запущенного CLI, набрав:

version

Одна из наиболее важных команд указывает Spring Boot CLI запустить сценарий Groovy:

run [SCRIPT_NAME].groovy

Spring Boot CLI либо автоматически определит зависимости, либо сделает это с учетом правильно предоставленных аннотаций. После этого он запустит встроенный веб-контейнер и приложение.

Давайте подробнее рассмотрим, как использовать скрипт Groovy с интерфейсом командной строки Spring Boot!

4. Основные сценарии Groovy

Groovy и Spring объединяются с интерфейсом командной строки Spring Boot, что позволяет быстро создавать сценарии мощных и производительных микросервисов в однофайловых развертываниях Groovy.

Для поддержки приложений с несколькими сценариями обычно требуются дополнительные инструменты сборки, такие как Maven или Gradle.

Ниже мы рассмотрим некоторые из наиболее распространенных вариантов использования Spring Boot CLI, оставив более сложные настройки для других статей.

Список всех аннотаций Groovy, поддерживаемых Spring, можно найти в официальной документации.

4.1. @Grab

Аннотация @Grab и предложения импорта Groovy в стиле Java позволяют легко управлять зависимостями и внедрять их.

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

Давайте посмотрим, как использовать аннотацию @Grab:

package org.test

@Grab("spring-boot-starter-actuator")

@RestController
class ExampleRestController{
  //...
}

Как мы видим, spring-boot-starter-actuator поставляется предварительно сконфигурированным, что позволяет развертывать краткие сценарии, не требуя настраиваемого приложения или среды. свойства, XML или другую программную конфигурацию, хотя каждая из этих вещей может быть указана при необходимости.

Полный список аргументов @Grab, каждый из которых указывает библиотеку для загрузки и импорта, доступен здесь.

4.2. @Controller, @RestController и @EnableWebMvc

Чтобы еще больше ускорить развертывание, мы можем в качестве альтернативы использовать предоставленные Spring Boot CLI «подсказки» для автоматического определения правильных зависимостей для импорта.

Ниже мы рассмотрим некоторые из наиболее распространенных вариантов использования.

Например, мы можем использовать знакомые аннотации @Controller и @Service для быстрого формирования стандартного контроллера и службы MVC:

@RestController
class Example {
 
    @Autowired
    private MyService myService;

    @GetMapping("/")
    public String helloWorld() {
        return myService.sayWorld();
    }
}

@Service
class MyService {
    public String sayWorld() {
        return "World!";
    }
}

Интерфейс командной строки Spring Boot поддерживает все конфигурации по умолчанию для Spring Boot. Таким образом, мы можем, чтобы наши приложения Groovy автоматически получали доступ к статическим ресурсам из их обычных расположений по умолчанию.

4.3. @EnableWebSecurity

«Чтобы добавить параметры безопасности Spring Boot в наше приложение, мы можем использовать аннотацию @EnableWebSecurity, которая затем будет автоматически загружена CLI Spring Boot.

Ниже мы абстрагируем часть этого процесса, используя зависимость spring-boot-starter-security, которая использует аннотацию @EnableWebSecurity под капотом:

package bael.security

@Grab("spring-boot-starter-security")

@RestController
class SampleController {

    @RequestMapping("/")
    public def example() {
        [message: "Hello World!"]
    }
}

Подробнее о том, как защищать ресурсы и обрабатывать безопасности, ознакомьтесь с официальной документацией.

4.4. @Test

Чтобы настроить простой тест JUnit, мы можем добавить аннотации @Grab(‘junit’) или @Test:

package bael.test

@Grab('junit')
class Test {
    //...
}

Это позволит нам легко выполнять тесты JUnit.

4.5. DataSource и JdbcTemplate

Можно указать постоянные параметры данных, включая DataSource или JdbcTemplate, без явного использования аннотации @Grab:

package bael.data

@Grab('h2')
@Configuration
@EnableWebMvc
@ComponentScan('bael.data')
class DataConfig {

    @Bean
    DataSource dataSource() {
        return new EmbeddedDatabaseBuilder()
          .setType(EmbeddedDatabaseType.H2).build();
    }

}

Просто используя знакомые соглашения о конфигурации компонентов Spring, мы захватили встроенную базу данных H2 и установили ее. в качестве источника данных.

5. Пользовательская конфигурация

Существует два основных способа настройки микросервиса Spring Boot с помощью интерфейса командной строки Spring Boot:

  1. we can add argument parameters to our terminal commands
  2. we can use a customized YAML file to provide an application configuration

Spring Boot будет автоматически искать в каталоге /config файлы application.yml или application.properties ~~ ~

├── app
    ├── app.groovy
    ├── config
        ├── application.yml
    ...

Мы также можем настроить:

├── app
    ├── example.groovy
    ├── example.yml
    ...

Полный список свойств приложения можно найти здесь, в Spring.

6. Заключение

На этом мы завершаем наш краткий обзор Spring Boot CLI! Для получения более подробной информации ознакомьтесь с официальными документами.

Как обычно, исходный код этой статьи можно найти на GitHub.