zoukankan      html  css  js  c++  java
  • 峰哥说技术:02第一个Spring Boot应用程序

    Spring Boot深度课程系列

    峰哥说技术—2020庚子年重磅推出、战胜病毒、我们在行动

    02第一个Spring Boot应用程序

    1、版本要求

    集成开发环境:IntelliJ IDEA 2017.2.1 ,Spring Boot 版本:2.2.42、

    2、步骤介绍

     

    3、编写Helloworld,参照Spring MVC的写法

    A) chapter01文件夹下创建包controller,创建类HelloController.

    B) 代码如下

    package com.java.chapter01.controller;

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;

    @RestController
    public class HelloController {
        @GetMapping("/hello")
        public String hello(){
            return "Hello,Spring Boot!";
        }
    }

    C) 启动工程,并测试

     

    D) 浏览器输入:http://localhost:8080/hello

     

    E) 对于parent的理解:

    我们回忆一下,在我们创建工程的时候添加了一个Spring Web依赖。然后我们打开pom.xml文件,会发现有一段如下的配置依赖。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.2.4.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
       </parent>
       <groupId>com.java</groupId>
       <artifactId>chapter01</artifactId>
       <version>0.0.1-SNAPSHOT</version>
       <name>chapter01</name>
       <description>Demo project for Spring Boot</description>
       <properties>
          <java.version>1.8</java.version>
       </properties>
       <dependencies>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
             <exclusions>
                <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
             </exclusions>
          </dependency>
       </dependencies>
       <build>
          <plugins>
             <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
          </plugins>
       </build>
    </project>

    很显然,我们创建Spring Boot应用程序就是在parent中添加spring-boot-starter-parent。如果要配置web服务就在dependencies中添加spring-boot-starter-web的依赖。其实添加其他服务,也类似如此添加依赖。依赖的名称一般都是spring-boot-starter-xxx,这样就可以了。

    下面我们针对parent进行进一步的研究。如下图点击进入

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
       <modelVersion>4.0.0</modelVersion>
       <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.2.4.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
       </parent>
       //其余省略...

    spring-boot-starter-parent-2.2.4.RELEASE.pom中,对于关键部分分别进行解读。

    <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>2.2.4.RELEASE</version>
      <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>

    这说明spring-boot-starter-parent进一步依赖spring-boot-dependencies,等会对spring-boot-dependencies再进行研究.

    <properties>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>
      <resource.delimiter>@</resource.delimiter>
      <maven.compiler.source>${java.version}</maven.compiler.source>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.target>${java.version}</maven.compiler.target>
    </properties>

    上面的内容依次是如下含义

    1)定义了工程报告的输出编码为UTF-8

    2)java的版本是1.8.

    3)由于application.properties和application.yml文件接受Spring样式占位符 $ {...} ,因此 Maven 过滤更改为使用 @ .. @ 占位符,当然开发者可以通过设置名为 resource.delimiter 的Maven 属性来覆盖 @ .. @ 占位符。

    4)Java编译的版本引用java的版本,所以也是1.8

    5)工程构建的源码的编码是UTF-8

    6)maven编译后的目标的编码是1.8

    <resources>
      <resource>
        <filtering>true</filtering>
        <directory>${basedir}/src/main/resources</directory>
        <includes>
          <include>**/application*.yml</include>
          <include>**/application*.yaml</include>
          <include>**/application*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>${basedir}/src/main/resources</directory>
        <excludes>
          <exclude>**/application*.yml</exclude>
          <exclude>**/application*.yaml</exclude>
          <exclude>**/application*.properties</exclude>
        </excludes>
      </resource>
    </resources>

    这里定义了自动化的资源过滤,当filteringtrue的时候来表示资源文件中的占位符是否需要被profiles中的属性动态替换,true为需要替换。上面是说打包的时候会把.yml和.yaml以及.properties文件打包的目标中。

    <pluginManagement>
      <plugins>
        <plugin>

    //省略...
        </plugin>
      </plugins>
    </pluginManagement>

    这里是插件的统一管理配置,这样我们在工程中如果时候插件的时候引用插件即可,不需要再写具备的版本号。

    最后点击 spring-boot-dependencies,进入spring-boot-dependencies-2.2.4.RELEASE.pom文件,可以看到定义了很多依赖的jar的版本和利用dependencyManagement对依赖进行了统一的管理。在改节点中定义的依赖,我们后面在使用的时候可以直接使用改依赖,不需要指定版本号,这样在多模块程序中可以做到版本的统一,避免版本不一致带来各种问题。

    但是并非所有的公司都需要这个 parent ,有的时候,公司里边会有自己定义的 parent ,我们的 Spring Boot 项目要继承自公司内部的 parent ,这个时候该怎么办呢?一个简单的办法就是我们自行定义 dependencyManagement 节点,然后在里边定义好版本号,再接下来在引用依赖时也就不用写版本号了,像下面这样:

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.4.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>

    这样写之后,依赖的版本号问题虽然解决了,但是关于打包的插件、编译的 JDK 版本、文件的编码格式等等这些配置,在没有 parent 的时候,这些统统要自己去配置。后面我们在项目中会带着大家尝试使用,这里知道就可以了。

     

  • 相关阅读:
    Codeforces467C George and Job
    Codeforces205E Little Elephant and Furik and RubikLittle Elephant and Furik and Rubik
    Codeforce205C Little Elephant and Interval
    51nod1829 函数
    51nod1574 排列转换
    nowcoder35B 小AA的数列
    Codeforce893E Counting Arrays
    gym101612 Consonant Fencity
    CodeForces559C Gerald and Giant Chess
    CodeForces456D A Lot of Games
  • 原文地址:https://www.cnblogs.com/027kgc/p/12342592.html
Copyright © 2011-2022 走看看