Этот пост был написан совместно Филом Уэббом и Дейвом Сайером .
Мы рады объявить о первом выпуске нового проекта под названием Spring Boot .
Spring Boot призван упростить создание приложений и сервисов промышленного уровня на основе Spring с минимальными усилиями. Он принимает взвешенный взгляд на платформу Spring, чтобы новые и существующие пользователи могли быстро добраться до нужных им битов. Вы можете использовать его для создания автономных приложений Java, которые могут быть запущены с использованием 'java -jar'
или более традиционных развертываний WAR. Мы также предоставляем инструмент командной строки, который запускает «весенние скрипты».
Диаграмма ниже показывает Spring Boot как точку внимания на большую экосистему Spring. Он представляет небольшую площадь поверхности для пользователей, чтобы приблизиться и извлечь ценность из остальной части Spring:
Основными целями 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 Maven, Gradle 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!