Статьи

Spring Boot — упрощающая весна для всех

Этот пост был написан совместно  Филом Уэббом  и  Дейвом Сайером .

Мы рады объявить о первом выпуске нового проекта под названием Spring Boot .

Spring Boot призван упростить создание приложений и сервисов промышленного уровня на основе Spring с минимальными усилиями. Он принимает взвешенный взгляд на платформу Spring, чтобы новые и существующие пользователи могли быстро добраться до нужных им битов. Вы можете использовать его для создания автономных приложений Java, которые могут быть запущены с использованием  'java -jar' или более традиционных развертываний WAR. Мы также предоставляем инструмент командной строки, который запускает «весенние скрипты».

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

Spring Boot в контексте

Основными целями Spring Boot являются:

  • Обеспечить радикально более быстрое и широкодоступное начало работы для всей разработки Spring
  • Быть самонадеянным, но быстро убираться с дороги, когда требования начинают отличаться от значений по умолчанию
  • Предоставить ряд нефункциональных функций, которые являются общими для больших классов проектов (например, встроенные серверы, безопасность, метрики, проверки работоспособности, внешняя конфигурация)

Spring Boot  не  генерирует код и абсолютно  не  требует настройки XML.

Весенние скрипты

Spring Boot поставляется с небольшим приложением командной строки, которое можно использовать для запуска «весенних скриптов». Сценарии Spring написаны на  Groovy , что означает, что у вас есть знакомый Java-подобный синтаксис без большого количества стандартного кода. Мы можем вывести много информации, просто взглянув на то, как вы написали свой сценарий. Например, вот простое веб-приложение:

@Controller
class ThisWillActuallyRun {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!"
    }

}

Когда вы запускаете это приложение с  'spring run webapp.groovy' использованием ряда вещей, происходит:

  • Ваш скрипт дополнен общими  'import' инструкциями, чтобы вы не печатали их
  • Мы распознаем  @ResponseBody аннотацию и загружаем соответствующие Spring JAR
  • Мы автоматически создаем Spring  @Configuration , который в противном случае вам нужно было бы написать
  • Мы запускаем встроенный контейнер сервлетов и обрабатываем входящие запросы через порт 8080.

Инструмент командной строки распознает ряд различных типов приложений Spring, в том числе Web, Batch и Integration. В
репозитории GitHub доступно
несколько  примеров .

Весенняя обувь с Явой

Вам не нужно использовать инструмент командной строки или писать код на Groovy, чтобы получить преимущества Spring Boot. У нас также есть первоклассная поддержка Java. Например, вот то же приложение, написанное на Java:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/")
    @ResponseBody
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SampleController.class, args);
    }
}

Помимо операторов import, основным отличием этого примера от более раннего скрипта Groovy является  main() метод, который вызывает,  SpringApplication и @EnableAutoConfiguration аннотация.

Obviously with Java you also need a build system to compile and package your code. We provide a number of convenient ‘starter’ POMs that you can use with MavenGradle orAnt+Ivy to quickly grab appropriate dependencies. For example, the application above would need just a single dependency to the spring-boot-starter-web module.

We also provide Maven and Gradle plugins that allow you to package a fully self contained ‘fat jar’ that can be started from the command line:

$ java -jar myproject.jar
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::   v0.0.0.BUILD.SNAPSHOT

2013-07-31 00:08:16.117  INFO 56603 --- [           main] o.s.b.s.app.SampleApplication   : Starting SampleApplication v0.1.0 on mycomputer with PID 56603 (/apps/myapp.jar started by pwebb)
2013-07-31 00:08:16.166  INFO 56603 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e5a8246: startup date [Wed Jul 31 00:08:16 PDT 2013]; root of context hierarchy

PRODUCTION READY

Spring Boot also includes helpful features that you often need when you push an application into production. We can automatically provide web endpoints that you can use to monitor application health, provide basic metrics or use to analyze production issues (such as thread deadlocks). We also provide a new @ConfigurationProperties annotation that you can use to externalize your application configuration (complete with support for JSR-303@Valid annotations).

TAKING IT FOR A SPIN

Spring Boot 0.5.0.M1 is available now in the Spring Milestone Repository. If you want to try out any of the examples in this blog head over to the GitHub project page where you find detailed instructions. We are actively looking for early feedback so please feel free to raise issues or fork the repository and submit pull requests.

SPRINGONE 2GX 2013 IS AROUND THE CORNER

Book your place at SpringOne in Santa Clara soon. It’s simply the best opportunity to find out first hand all that’s going on and to provide direct feedback. Expect a number of significant new announcements this year. Check recent blog posts to see what I mean and there is more to come!