Первый весенний ботинок, приветствуй мир! ! !

Spring Boot

предисловие

Я думаю, что друзья, которые занимаются Java-разработкой, слышали об этом.SSMфреймворк, это еще молодой, старые уже даже пережилиSSH, это звучит немного страшно, ха-ха. Например, я испыталSSHВ конце той эпохи не было пути, очень беспомощного.

Конечно, ни SSM, ни SSH сегодня не в центре внимания.Spring Boot, привлекающий внимание фреймворк, от большого, заменил Spring BootSSMсерединаSSхарактер.

Сегодня в этой статье речь пойдет о Spring Boot, я впервые использую прямой вызовс кадр.

Что такое Spring Boot?

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

Цель дизайна Spring Boot проста в одном предложении: упростить начальный процесс создания и разработки приложений Spring.

По своей сути Spring Boot представляет собой набор библиотек, которые могут использоваться любой системой сборки проекта. Оно использует "соглашение о конфигурации” (в проекте много конфигураций, а также встроенная пользовательская конфигурация) концепция, позволяющая быстро запустить и запустить ваш проект.

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

Как создать проект Spring Boot?

На самом деле существует много способов собрать проект SpringBoot, два наиболее распространенных из них следующие:

  1. Создайте проект Maven, самостоятельно импортируйте зависимости, создайте классы запуска и файлы конфигурации.
  2. Прямо в ИДЕЕ Spring InitializrСоздайте проект.

Первый метод не подходит для начинающих, сегодня я продемонстрирую второй метод сборки проекта Spring Boot.

Первый шаг — выбрать в IDEAFile-->NEW-->Project,выберитеSpring Initializr, указавJDKВерсия1.8,ПотомNext. Как показано ниже:

На втором шаге указываются координаты Maven, имя пакета, версия JDK и другая информация, а затемNext,Как показано ниже:

Третий шаг — выбор зависимостей и нужной вам версии Spring Boot.Адаптация Spring Boot к каждому фреймворку основана наstarterКстати, здесь мы выбираем то, что требуется для WEB-разработкиstarterВы можете, как показано ниже:

Четвертый шаг указывает имя проекта, путь можно заполнить, нажмитеFinishПодождите, пока создание пройдет успешно, как показано ниже:

Создайте успешный проект, как показано ниже:5

один из нихDemoApplicationЭто стартовый класс проекта, который имеетmain()Метод используется для запуска Spring Boot.application.propertiesэто файл конфигурации Spring Boot.

На этом этапе вы можете начать проект, вDemoApplicationбегатьmainМетод можно запустить, и запуск прошел успешно, как показано ниже:

Поскольку в SpringBoot по умолчанию встроен Tomcat, порт по умолчанию для запуска —8080.

Первая программа Hello World

Изучение любой технологии всегда должно приветствовать мир, ха-ха...  

Поскольку это WEB-разработка, напишите интерфейс, на который ссылались при его создании ранее.WEBизstarter, если ссылки нет, то ее можно найти вpom.xmlИмпортируйте следующие зависимости:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

  • напишите один нижеHelloWorldControllerследующим образом:
package com.example.demo.controller;
@RestController
public class HelloWorldController {
    @RequestMapping("/hello")
    public String helloWorld(){
        return "Hello World";
    }
}

@RestController: отметить это какcontroller,Да@Controllerа также@ResponseBodyКоллекция этих двух аннотаций.

@RequestMapping: указать сопоставление

Приведенные выше две аннотации относятся к Spring, поэтому я не буду здесь вдаваться в подробности.

Поскольку встроенный порт Tomcat по умолчанию8080, так что начните проект, посетитеhttp://127.0.0.1:8080/helloВот и все.

зависимая интерпретация

в проекте Spring Bootpom.xmlСуществует такая зависимость, как показано ниже:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/>
    </parent>

<parent>Вы знаете, что означает этот ярлык.父亲Да, основное назначение такого тега — контроль версий. это введениеWEBмодульstarterКогда не нужно указывать номер версии<version>Причина для ярлыка, потому что вspring-boot-starter-parentЭто было указано в отношениях, похожих на отношения наследования, отец предоставил их вам, вам нужно только выбрать, использовать их или нет.

Зачем вводитьspring-boot-starter-webготовые к использованиюSpring mvcфункция?

Это действительно сложный вопрос для понимания, чтобы понять эту проблему, давайте взглянем наspring-boot-starter-webОт чего зависит этот лаунчер? следующим образом:

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

Вы должны понять, когда увидите это.spring-boot-starter-webэтоstarterСобственно, внутреннее введениеSpring,springmvc,tomcatКонечно, вы можете напрямую использовать функции Spring MVC.

Что такое файл конфигурации?

сказал раньшеapplication.propertiesЭто файл конфигурации Spring Boot, так что же именно настроено в этом файле конфигурации?

На самом деле, чтобы иметь возможность адаптироваться к каждому компоненту, Spring Boot предоставитstarter, но некоторая информация этих лаунчеров не может быть записана внутри насмерть, например логин и пароль базы данных, которые должны быть указаны разработчиком, поэтому они написаны в единомPropertiesВ классе, когда запускается Spring Boot, согласно前缀名+属性名称читать из файла конфигурации, например.WebMvcProperties, который определяет некоторые конфигурации, связанные с Spring Mvc, с префиксомspring.mvc. следующим образом:

@ConfigurationProperties(prefix = "spring.mvc")
public class WebMvcProperties {

Затем нам нужно изменить конфигурацию, связанную с Spring Mvc, просто вapplication.propertiesуказано в файлеspring.mvc.xxxx=xxxxВот и все.

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

Что такое стартовый класс?

Как упоминалось ранее, класс запускаDemoApplication, исходный код выглядит следующим образом:

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

@SpringBootApplicationчто это такое? На самом деле, на первый взгляд, этот класс нормальный, единственное, что бросается в глаза, это@SpringBootApplicationВ этой аннотации, конечно же, главная роль принадлежит именно ей. Исходный код этой аннотации выглядит следующим образом:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {}

Я милый, аннотации наложены, полностью@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScanЭти три аннотации накладываются друг на друга.

ComponentScan: Эта аннотация не является незнакомой, аннотация в Spring, аннотация сканирования пакетов, функция этой аннотации - сканирование при запуске проекта.Тот же уровень класса запуска и bean-компонентов в подчиненном пакете.

@SpringBootConfiguration: Эта аннотация является аннотацией Spring Boot, исходный код выглядит следующим образом:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

Как видно из исходного кода,@SpringBootConfigurationполностью@Configurationаннотация,@ConfigurationЭто аннотация в Spring, указывающая, что класс является классом конфигурации, поэтому мы можем делать некоторые вещи в классе запуска, которые может делать класс конфигурации, например, внедрятьBean.

@EnableAutoConfiguration: эта аннотация знает, что происходит, когда вы видите имя, напрямую переводите код,Включить автоматическую настройку, как следует из названия, исходный код выглядит следующим образом:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

Еще одна знакомая заметка@Import, какая функция?Быстро импортируйте бобы в контейнер IOC, есть три способа, вот один из нихImportSelectorСпособ. Это не тема данной статьи, поэтому я не буду вдаваться в подробности.

@EnableAutoConfigurationРоль этой аннотации также ясна с первого взгляда, не более@ImportЭто просто форма , которая быстро внедряется в контейнер IOC при запуске проекта.BeanВот и все.

Что ж, сначала здесь будет представлен класс запуска, а статья с исходным кодом будет обсуждаться позже, чтобы лучше понять возможности этого класса.

Как проводить модульное тестирование?

Создание проекта Spring Boot предоставляет нам класс для модульного тестирования следующим образом:

@SpringBootTest
class DemoApplicationTests {

    @Test
    void contextLoads() {
    }

}

@SpringBootTest: Эта аннотация указывает, что этот класс является классом для модульного тестирования.

В этом классе bean-компоненты в контейнере IOC могут быть получены автоматически, например:

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private HelloWorldController helloWorldController;

Это просто краткое введение.В реальной разработке он не используется.По мере того, как проект становится все больше и больше, время запуска становится все больше и больше.Кто будет настолько глуп, чтобы запустить тестовый метод для проверки кода, который является чистым пустая трата времени.

Суммировать

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

Инструменты разработки, использованные в этой статье,IDEA,Есть необходимость2020Версия публичного аккаунта [Code Ape Technology Column] Ответ на ключевые словаIDEA2020, есть ключевые слова ответа, для которых нужен пакет взлома IDEAIDEA破解包