Возможно, вы слышали о Spring Boot и его магических силах при создании веб-приложения Spring длиной до 140 символов, которые можно написать в твите, но что это на самом деле означает? Какие функции предоставляют Spring Boot такую мощь и делают разработку приложений Spring такой простой? Хорошо, это то, что вы узнаете в этой статье, но если вы спешите, позвольте мне рассказать вам, что вы узнаете об автоконфигурации Spring Boot, зависимостях Starter, CLI Spring Boot, Actuator и Spring Initializer. Это функция, которая устраняет большую часть боли и трений, связанных с написанием Java-приложения на основе Spring.
Но, прежде чем углубляться в эту деталь, давайте вернемся к проблемам, связанным с Java-разработкой на основе Spring. Мне лично нравится сначала видеть проблему и чувствовать ее прежде, чем я смогу насладиться ее решением. Помните, что комфорт чувствуется лучше только после тяжелой работы, так же как и еда, вам больше нравится, когда вы голодны.
Spring, несомненно, является отличным фреймворком, он делает много вещей для вас, например, он создает объект для вас, он предоставляет им их зависимость, он забирает много кода, который вы написали бы, если Spring не существует, но взамен он также требует от вас многого в плане конфигурации и обучения.
Если вы когда-либо работали в новом проекте, где вы с нуля запустили новое Java-приложение на базе Spring, вы знаете, что это не просто. Сначала нужно найти все необходимые зависимости, а затем их совместимую версию. Вам также необходимо настроить множество bean-компонентов, чтобы активировать магию Spring.
Например, если вы хотите создать REST-приложение на основе Spring MVC, которое поддерживает формат JSON во встроенном tomcat, то в вашем файле Maven pom.xml должно быть как минимум 8-10 зависимостей, например spring-core.jar, spring-mvc.jar, jackson.jar, embedded-tomcat.jar и т. д., и учтите, что это очень простая установка.
Spring Boot просто устраняет все эти трудности и позволяет вам написать код, который имеет значение, т.е. код приложения. Все функции Spring Boot, которые я упомянул, например, автоконфигурирование, POM для Starter или зависимость от Starter и Spring Boot CLI, направлены на упрощение разработки Java с помощью Spring.
Теперь давайте углубимся в подробности о каждой из этих функций.
1. Автоконфигурация
Возможно, вы работали с веб-приложением на основе Spring, которое подключается к реляционной базе данных, например, к базе данных в памяти, такой как H2, и если да, то вы можете знать, что вам нужно объявить JdbcTemplate
как bean-компонент, а также настроить источник данных, который является зависимость для JdbcTempalte.
В современном приложении Spring, которое использует configuration
основе Java, вам нужно добавить следующие два метода в ваш
Класс конфигурации:
01
02
03
04
05
06
07
08
09
10
11
12
|
@Bean public JdbcTemplate jdbcTempalte(DateSource ds){ return new JdbcTempalte(ds); } @Bean public DataSource dataSource(){ return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2) .addScripts( 'ddl.sql' , 'data.sql' ) .build(); } |
На самом деле это не сложно для тех, кто занимался разработкой Spring, но если вы начинаете заново, то это может занять часы и дни.
Но, что более важно, это кусок кода, который многие из нас написали независимо от нашего приложения. Я имею в виду, что этот код не уникален, и он понадобится каждому приложению Spring, которое работает с JDBC.
Вот где Spring Boot AutoConfiguration входит в картину. Он обнаруживает присутствие определенного класса в пути к классам, а затем автоматически настраивает его для вас.
Например, если вы добавили JdbcTempalte
в ваш JdbcTempalte
к JdbcTempalte
а также H2.jar, то Spring Boot может автоматически настроить базу данных в памяти для вас и JdbcTempatle, который готов к использованию. Вам не нужно писать приведенный выше код, чтобы использовать JdbcTemplate
на вашем уровне DAO.
Это всего лишь пример. Автоконфигурация Spring Boot принимает более 200+ таких решений и автоматически настраивает многие функции путем изучения зависимостей JAR. Например, если присутствует spring-mvc.jar, он может автоматически настроить DispatcherServlet , InternalViewResolver и т. Д.
Если присутствуют JPA и Hibernate, он также может это настроить, а если у вас есть spring-security.jar, то он может даже настроить базовую защиту для защиты вашего приложения.
Кстати, когда речь заходит о автоматической настройке, необходимы глубокие знания для надлежащей защиты вашего приложения.
Функция @EnableAutoConfiguration
по умолчанию отключена, и вам необходимо включить ее с помощью аннотации @EnableAutoConfiguration
или @SpringBootApplication
в вашем классе конфигурации. Обычно я комментировал основной класс, который я собираюсь запустить со встроенным сервером Tomcat.
Рекомендуется использовать аннотацию @SpringBootApplication
начиная с Spring Boot 1.2 и далее, поскольку она объединяет несколько других аннотаций, чтобы сделать ваш код более читабельным.
Короче говоря, функция автоматической настройки Spring Boot экономит много работы и сокращает время разработки, и я настоятельно рекомендую использовать автоматическую настройку всякий раз, когда вы используете Spring Boot.
2. Стартовые POM
В то время как AutoConfiguration избавляет от необходимости настраивать общие функции, POM Starter устраняет трудности, находя и добавляя общие зависимости в ваш проект.
Чтобы создать простое REST-приложение на основе Spring MVC, которое поддерживает Джексона, и запустить его во встроенный контейнер, вам, по крайней мере, потребуются следующие зависимости, например:
1
2
3
4
5
6
7
|
spring-core.jar spring-web.jar spring-webmvc.jar jackson-databind.jar tomcat-embed-core.jar tomcat-embed-el.jar tomcat-embed-logging-juil.jar |
Используя Spring Boot Starter POM или функцию зависимости для начинающих, вы можете получить все это, просто добавив зависимость spring-boot-starter-web в свой файл pom.xml.
Таким образом, вместо добавления всех этих зависимостей и заботы об их совместимой версии, вам просто нужно добавить одну. Вы также будете более уверены в том, что используются проверенные и протестированные версии библиотек, и в будущем проблем с несовместимостью не возникнет.
Еще одно тонкое преимущество функции начальных POM заключается в том, что вам не нужно запоминать или искать зависимости. Если вы создаете веб-приложение, вы можете добавить «веб» стартер, если вы создаете
JPA-приложение, которое вы можете добавить для начала, используя jpa, объединяя общие зависимости по функциональности. Spring Boot облегчает их запоминание и использование.
Кстати, если вам интересно, как работает функция Starter POM, то позвольте мне рассказать вам обо всем, что происходит от Maven или функции транзитивной зависимости Gradle. Это Maven или Gradle, который тянет правильные версии библиотек, POM Starter просто объявляет их. Если вы хотите узнать больше, я предлагаю вам ознакомиться с курсом быстрой разработки приложений Dan Vega с использованием Spring Boot.
Короче говоря, POM для начинающих или зависимость для начинающих — это еще одна замечательная функция Spring Boot, которая действительно помогает упростить разработку приложений Spring. Это как близкий родственник автоконфигурации, и вы будете часто использовать их вместе.
3. Spring Boot CLI
В первом абзаце этой статьи я сказал, что теперь возможно создать веб-приложение на Java, которое может вписаться в твит, и это происходит из-за Groovy и Spring Boot CLI.
Spring Boot CLI — это интерфейс командной строки, предоставляемый средой Spring Boot, который позволяет создавать веб-приложения на основе Spring с использованием языка программирования Groovy. На самом деле Groovy и Spring Boot прекрасно дополняют друг друга, Groovy стремится упростить разработку Java, в то время как Spring Boot стремится упростить разработку приложений Spring и извлечь выгоду из простоты друг друга.
Несмотря на то, что автоконфигурация и начальные зависимости являются неотъемлемой функцией Spring Boot, Spring CLI является необязательным, вам также необходимо установить Spring CLI для его использования.
Вот простой веб-сервис RESTful HelloWorld в Groovy и Spring Boot CLI, и он работает, вы можете просто запустить его даже без компиляции, как показано ниже:
1
2
3
4
5
6
7
8
|
@RestController class HelloSpringBootController{ @RequestMapping ( "/" ) def hello() { return "Hello Spring Boot CLI" } } |
Вот и все, вы можете запустить его во встроенном контейнере, который поставляется с Spring Boot CLI, без web.xml, без конфигурации и без настройки сервера.
Если вам интересно, как все это работает, то есть как Groovy знает об аннотациях @RestController и @RequestMapping
то позвольте мне сказать, что в Spring Boot CLI используется функция автоматической настройки и запуска POM, чтобы вы могли сосредоточиться только на написании кода приложения?
Spring Boot CLI обнаруживает, что @RestController
и @RequestMapping
используются, и он знает, какие начальные зависимости необходимо добавить в classpath, чтобы он работал.
Как только он загружает эти серии зависимостей, автоконфигурация автоматически запускает и настраивает его для использования, например, как только spring-boot-web-starter появляется на рисунке, он загружает spring-mvc.jar, а затем автоконфигурация автоматически настраивает DispatcherServlet и включает Весна MVC.
Все это выглядит как волшебство, но это реальность.
4. Привод
Привод — это еще одна замечательная функция Spring Boot, которая позволяет видеть, что происходит внутри работающего приложения Spring Boot. Несмотря на все преимущества автоматической настройки, существует риск не знать, что находится внутри вашего приложения, и этот риск устраняется Spring Actuator.
Он предоставляет множество идей и метрик о работающем приложении в производстве. Например, с помощью Actuator вы можете точно узнать, какие bean-компоненты настроены в контексте приложения, какие решения автоконфигурации приняты, какие переменные среды, системные свойства, аргументы командной строки доступны для приложения и многое другое.
Вы даже можете получить трассировку HTTP-запросов, обрабатываемых приложением, наряду с различными полезными метриками приложения, например, использованием ЦП и памяти, сведениями о сборке мусора, веб-запросами и использованием источника данных.
Spring Boot Actuator также предоставляет несколько конечных точек для извлечения этих данных, например, вы можете получить все это с помощью API-интерфейсов RESTful или использовать функцию удаленной оболочки для безопасного входа в приложение и получения всей этой информации с помощью команд.
Он также предоставляет всю эту функциональность, используя JMX MBeans, что означает, что вы можете управлять ими во время выполнения, используя JMX-клиент, такой как JConsole.
В то же время вам также необходимо обеспечить безопасный доступ к конечным точкам привода, поскольку он не только предоставляет конфиденциальную информацию, но и опасен. Например, любой может остановить ваше приложение, используя / shutdown endpoints.
Хотя вам не нужно беспокоиться. Как и любое другое приложение Spring, вы можете использовать Spring Security для защиты конечных точек привода.
5. Spring Boot Initializer
Spring Initializer — это еще одна особенность Spring Boot, которая решает проблему, связанную со структурой проекта. Это веб-приложение, которое позволяет создавать проекты Maven или Gradle с использованием Java, Kotline или Groovy и Spring Boot.
Все, что вам нужно указать, это предоставить метаданные проекта в графическом интерфейсе, например, название вашего проекта, группы, артефакта и т. Д. Он также позволяет вам выбрать начальную зависимость из большого списка, например, веб, JPA или начальный уровень безопасности.
Доступ к проекту Spring Initializer можно получить по адресу https://start.spring.io/. Создав проект, вы можете скачать Zip-файл, а затем открыть его в IDE, например, Eclipse или IntelliJ IDEA, как объясняется в курсе Spring Boot Essential Нельсона Джало. Затем вы можете отредактировать этот пример проекта, чтобы поместить свой код.
По моему опыту, одна из распространенных проблем, с которыми сталкиваются многие разработчики Java и Spring, — это начать проект. Многие из них не знают, стоит ли размещать ваш файл Java, файл ресурсов и т. Д.
Хотя Maven , Gradle, IntelliJ IDEA и Eclipse помогают вам дать базовую структуру, необходимую для того, чтобы овладеть этими двумя навыками, чтобы получить преимущество, и если вы не знакомы с Maven или вашей IDE, это может стать кошмаром.
Spring Boot Initaizer решает эту проблему и облегчает создание Java-приложения на основе Spring, не зная при этом многих внутренних деталей Spring Framework.
Это все о некоторых важных функциях Spring Boot, которые должны знать Java-разработчики. Эти функции действительно делают работу с Java и Spring интересной и продуктивной, поэтому все больше и больше компаний внедряют Spring Boot для разработки Java. Java-разработчики с опытом работы с Spring Boot также пользуются большим спросом, и если вы ищете свою следующую работу в качестве веб-разработчика Java, то навыки Spring Boot могут действительно изменить ситуацию.
Большое спасибо за чтение этой статьи до сих пор. Если вам нравятся эти функции Spring Boot, поделитесь с друзьями и коллегами. Если у вас есть какие-либо вопросы или пожелания, напишите нам
См. Оригинальную статью здесь: Топ-5 возможностей Spring Boot, которые должны знать Java-разработчики
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |