SpringBoot良心教程(三)一篇入门HelloWorld

1、Maven配置

SpringBoot官方要求maven3.5以上 & Java8
image

$ mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T14:33:14-04:00)
Maven home: /usr/local/Cellar/maven/3.3.9/libexec
Java version: 1.8.0_102, vendor: Oracle Corporation
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

首先在cmd通过maven-vjava -version确定maven版本和Java版本有没有问题,然后在maven安装路径如D:\Software\DevelopmentTools\apache-maven-3.8.1\conf找到settings文件,将以下配置放入文件,之前配置过就修改,没配置过就直接粘贴。
配置后maven下载依赖时使用阿里云的国内镜像,下载速度快,maven编译项目时使用jdk1.8

<mirrors>
      <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
  </mirrors>
 
  <profiles>
         <profile>
              <id>jdk-1.8</id>
              <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
              </activation>
              <properties>
                <maven.compiler.source>1.8</maven.compiler.source>
                <maven.compiler.target>1.8</maven.compiler.target>
                <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
              </properties>
         </profile>
  </profiles>

2、编写HelloWorld

需求

浏览发送/hello请求,响应Hello,SpringBoot2。

老方法

如果是使用之前的Servlet方式,首先要创建一个web项目,导入Spring,SpringMVC等一大堆依赖,然后编写Spring、SpringMVC的一大堆配置文件,整合Spring和SpringMVC,写完以后开发业务代码,然后再将整个应用部署到Tomcat服务器上,然后启动运行。

SpringBoot怎么做(按照官方文档教程来一步一步做)

创建项目

创建一个maven工程,创建之前,先检查maven,将maven改为自己下载的版本,不要用Bundled版本和idea插件版。

image
image

而且要修改settings文件的地址,点击Override,覆写配置文件地址,maven仓库文件可以使用默认的:

image

创建一个maven工程

image

在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>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.2</version>
    </parent>

    <!-- Additional lines to be added here... -->

</project>

加入starter-web

在pom.xml文件中将配置粘贴进去,然后更新maven依赖
image
之前开发web应用,需要添加spring,springMVC等等一大堆依赖,现在只需要添加一个spring-boot-starter-web依赖,就可以了,web场景启动器

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

然后web开发需要的依赖,就都导入进去了
image

业务开发

创建一个Java类
image

package com.shuwei.boot;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 主程序类
 * @SpringBootApplication:表明这是一个SpringBoot应用
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args); //固定写法
    }
}

然后再创建一个controller类,叫做HelloController,放在boot包里
image

@Controller
public class controller {

    @ResponseBody //表示要以字符串的形式返回给浏览器
    @RequestMapping("/hello")
    public String handle01(){
        return "Hello, Spring Boot 2!";
    }
}

/hello请求的逻辑就写完了,可能一个类里面要处理很多个请求,都是要给浏览器返回字符串,那直接将@ResponseBody注解写在类上,和@Controller同级的位置,表示这个类的每一个方法返回的数据都是直接写给浏览器的,而不是跳转到某个页面。另:@ResponseBody用法详解,SpringBoot有一个新注解,叫做@RestController,其实就是@ResponseBody@Controller的结合,这样就可以改为:

//@Controller
//@ResponseBody
@RestController
public class controller {

    @ResponseBody
    @RequestMapping("/hello")
    public String handle01(){
        return "Hello, Spring Boot 2!";
    }
}

进入@RestController,可以看到就是@ResponseBody@Controller的结合

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package org.springframework.web.bind.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Controller;

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller //这里
@ResponseBody //这里
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}

启动

只需要回到MainApplication.class,点击绿色三角,即可运行
image
然后,可以看到,tomcat服务已经起来了,然后在浏览器输入localhost:8080/hello
image
SpringBoot的身份是一个整合者,目的是要简化配置,整合用到的一系列配置,可以通过在resources下新建application.properties文件,来抽取配置,完成对很多东西的配置,比如在文件内写入server.port=8888,重启以后,端口就变为8888了,非常方便。
image
那究竟可以写入哪些配置呢,官方文档给出了详尽的说明。可以找到我们之前写入的server.port
image
之前的web开发,我们需要将写好的代码打成war包,SpringBoot简化了这一操作,可以将应用直接打成可执行jar包(Executable jars),官方称为"fat jars",因为这个jar包很大,里面有一整套的运行环境。首先我们遵照官方文档,在pom文件中加入插件代码:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

然后打开maven,打包项目,按住ctrl多选clean和package,然后点击绿色箭头
image
打包成功以后,打开jar包所在文件夹,idea版本不同,有的为Show in explorer
image
在导航栏直接输入cmd,即在当前路径下打开cmd
image
执行java -jar boot-01-helloworld-1.0-SNAPSHOT.jar,效果和在idea启动是一样的。
image

总结

SpringBoot的好处:
  1. 简化配置,开箱即用,很多配置直接写在application.properties中
  2. 简化部署,一键启动,再也不需要在目标服务器安装一大堆东西,比如tomcat,只需要在SpringBoot中引入一个插件,把项目打成jar包即可,直接在目标服务器执行即可。
注意点:
  • 如果jar包的方式,服务没起来,可能是因为cmd窗口开了快速编辑模式,在服务启动过程,你点一下屏幕的位置,光标就会卡在那里,在cmd标题栏右键属性,把这个关掉即可。
    image
  • 如果在idea中,服务启动时,提示缺少xxx依赖,说明有些依赖没有下载完,将网络调整好,阿里云mirror设置好(非必须,但调整后下载速度能快一点),在maven中点击刷新,就可以将没有下载好的依赖下载进来,第一次使用SpringBoot,需要耐心一点,下载的jar包比较多。
    image
    用压缩软件打开之前打包的jar包,可以看到,里面东西非常多,一整套运行环境都在里面。
    image
    BOOT-INF/lib中,可以看到有很多jar包,其中就有tomcat-embed,说明打成的这个jar包,SpringBoot已经帮我们内嵌了Tomcat,以及依赖的所有jar包
    image
    我们自己写的逻辑在这里:boot-01-helloworld-1.0-SNAPSHOT.jar\BOOT-INF\classes\com\shuwei\boot\boot
    image

以上就是我们使用SpringBoot开发HelloWorld的全部内容啦,有疑问的同学可以留言给我哦,本教程持续更新,敬请关注~

posted @ 2021-07-21 15:08  iiiiiiiivan  阅读(101)  评论(0)    收藏  举报