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 的时候,这些统统要自己去配置。后面我们在项目中会带着大家尝试使用,这里知道就可以了。

     

  • 相关阅读:
    在linux CentOS7 安装Nginx 部署vue
    VS Code 用Vue Cli创建项目
    CentOS8通过命令设置IP地址
    C# .net Core WebApi 系列(一)创建与使用
    JS、C#编码解码
    C#通用类库--数字转为人民币汉字大写表示
    CheckUtil类
    Windows服务用bat命令安装与卸载
    突然的兴趣,我想写一个提取图片中特定颜色图像的程序
    一些常用的基础操作记录
  • 原文地址:https://www.cnblogs.com/027kgc/p/12342592.html
Copyright © 2011-2022 走看看