Введение в Spring Boot CLI

Введение в Spring Boot CLI

1. Вступление

Spring Boot CLI - этоcommand-line abstraction that allows us to easily run Spring micro-services expressed as Groovy scripts. Он также обеспечивает упрощенное и расширенное управление зависимостями для этих служб.

В этой короткой статье кратко рассматриваетсяhow to configure Spring Boot CLI and execute simple terminal commands to run pre-configured micro-services.

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

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

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

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

$ sdk install springboot

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

$ spring --version

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

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

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

Вstart the embedded shell запускаем:

spring shell

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

Например, мы можемdisplay the current version работающего CLI, набрав:

version

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

run [SCRIPT_NAME].groovy

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

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

4. Основные скрипты Groovy

Groovy и Spring идут вместе с Spring Boot CLI наallow powerful, performant micro-services to be quickly scripted in single-file Groovy deployments.

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

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

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

4.1. @Grabс

Аннотация@Grab и предложения Groovy в стиле Javaimport позволяют использоватьeasy dependency management and injection.

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

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

package org.test

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

@RestController
class ExampleRestController{
  //...
}

Как мы видим,spring-boot-starter-actuator comes pre-configured allowing for succinct script deployment without requiring a customized application or environmental properties, XML, or other programmatic configuration, хотя каждая из этих вещей может быть указана при необходимости.

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

4.2. @Controller, @RestController, и@EnableWebMvc

Чтобы еще больше ускорить развертывание, мы можем альтернативноutilize Spring Boot CLI’s provided “grab hints” to automatically infer correct dependencies to import.

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

Например, мы можем использовать знакомые аннотации@Controller и@Service кquickly scaffold a standard MVC controller and service:

@RestController
class Example {

    @Autowired
    private MyService myService;

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

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

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

4.3. @EnableWebSecurity

Дляadd Spring Boot Security options to our app мы можем использовать аннотацию@EnableWebSecurity, которая затем будет автоматически загружена Spring Boot CLI.

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

package bael.security

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

@RestController
class SampleController {

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

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

4.4. @Test

Кset up a simple JUnit test мы можем добавить аннотации@Grab(‘junit') или@Test:

package bael.test

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

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

4.5. DataSource иJdbcTemplate

Можно указать параметры постоянных данных, включаяDataSource илиJdbcTemplatewithout explicitly using the @Grab annotation:

package bael.data

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

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

}

By simply using familiar Spring bean configuration conventions, мы взяли встроенную базу данных H2 и установили ее какDataSource.

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

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

  1. мы можем добавить параметры аргумента в наши терминальные команды

  2. мы можем использовать настроенный файл YAML для обеспечения конфигурации приложения

Spring Boot будет автоматически искать в каталоге/configapplication.yml илиapplication.properties

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

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

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

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

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

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

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