SpringBoot良心教程(三)一篇入门HelloWorld
1、Maven配置
SpringBoot官方要求maven3.5以上 & Java8

$ 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-v和java -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插件版。


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

创建一个maven工程

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

之前开发web应用,需要添加spring,springMVC等等一大堆依赖,现在只需要添加一个spring-boot-starter-web依赖,就可以了,web场景启动器
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
然后web开发需要的依赖,就都导入进去了

业务开发
创建一个Java类

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包里

@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,点击绿色三角,即可运行

然后,可以看到,tomcat服务已经起来了,然后在浏览器输入localhost:8080/hello

SpringBoot的身份是一个整合者,目的是要简化配置,整合用到的一系列配置,可以通过在resources下新建application.properties文件,来抽取配置,完成对很多东西的配置,比如在文件内写入server.port=8888,重启以后,端口就变为8888了,非常方便。

那究竟可以写入哪些配置呢,官方文档给出了详尽的说明。可以找到我们之前写入的server.port。

之前的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,然后点击绿色箭头

打包成功以后,打开jar包所在文件夹,idea版本不同,有的为Show in explorer

在导航栏直接输入cmd,即在当前路径下打开cmd

执行java -jar boot-01-helloworld-1.0-SNAPSHOT.jar,效果和在idea启动是一样的。

总结
SpringBoot的好处:
- 简化配置,开箱即用,很多配置直接写在application.properties中
- 简化部署,一键启动,再也不需要在目标服务器安装一大堆东西,比如tomcat,只需要在SpringBoot中引入一个插件,把项目打成jar包即可,直接在目标服务器执行即可。
注意点:
- 如果jar包的方式,服务没起来,可能是因为cmd窗口开了快速编辑模式,在服务启动过程,你点一下屏幕的位置,光标就会卡在那里,在cmd标题栏右键属性,把这个关掉即可。

- 如果在idea中,服务启动时,提示缺少xxx依赖,说明有些依赖没有下载完,将网络调整好,阿里云mirror设置好(非必须,但调整后下载速度能快一点),在maven中点击刷新,就可以将没有下载好的依赖下载进来,第一次使用SpringBoot,需要耐心一点,下载的jar包比较多。

用压缩软件打开之前打包的jar包,可以看到,里面东西非常多,一整套运行环境都在里面。

BOOT-INF/lib中,可以看到有很多jar包,其中就有tomcat-embed,说明打成的这个jar包,SpringBoot已经帮我们内嵌了Tomcat,以及依赖的所有jar包

我们自己写的逻辑在这里:boot-01-helloworld-1.0-SNAPSHOT.jar\BOOT-INF\classes\com\shuwei\boot\boot


浙公网安备 33010602011771号