SpringBoot介绍及应用搭建
更多内容参见个人技术博客,无广告欢迎关注
1 SpringBoot全新开发方式+部署+整合
1.1 介绍
1.1.1 定义
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。成为SpringBoot全家桶,成为一把万能钥匙。
1.1.2 特点
l 创建独立的Spring应用程序
l 嵌入的Tomcat,无需部署WAR文件
l 简化Maven配置
l 自动配置Spring
l 提供生产就绪型功能,如指标,健康检查和外部配置
1.2 SpringBoot全新的pom.xml
1.2.1 生成pom.xml的页面
Spring官方支持SpringBoot提供的项目框架生成页面
1.2.2 选择支持的依赖
这里不用官网生成的项目,采用Idea生成项目,原理跟官网一样。
配置JRE运行环境
新建项目
1.2.3 导入生成的项目
1.3 第一个SpringBoot例子
1.3.1 创建Maven工程
创建Maven工程,创建simple project,类型为jar
Maven仓库 https://mvnrepository.com/ 所以开源的第三方依赖均可在这里找到,搜索spring
修改jdk版本必须1.8以上,springboot基本上废除了1.6、1.7
1.3.2 全新构建方式pom.xml
传统构建Maven项目,pom中的依赖包繁多,升级一个jar版本时,会引发新的冲突,调试许久。而SpringBoot接管了jar的版本,它构建好一套,这套中各jar的版本已经测试好,开发者再无需去关注每个依赖包的版本及冲突问题,从而简化开发。
再者,它启动也非常快,直接运行一个类,使用tomcat的maven插件。开发调试时效率提高。
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 父工程是SpringBoot,可见Maven工程是可以继承的 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.company</groupId>
<artifactId>hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hello</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 必须选择1.8 -->
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies
</project>
1.3.3 创建HelloController
使用@RestController替代@Controller和@ResponseBody(返回json串)
package com.company.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello")
public String hello(){
return "hello springboot";
}
}
1.3.4 全新运行方式
注意:必须加@SpringBootApplication注解,同时必须有包名
package com.company.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
}
1.4 拓展:热部署支持
1.4.1 pom.xml增加依赖
<!-- 热部署支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
1.4.2 修改controller
修改为RESTFul形式,保存时,SpringBoot会自动更新
package com.company.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("hello/{name}")
public String hello(){
return "hello springboot";
}
}
1.5 直接运行jar启动web服务
1.5.1 pom.xml
在pom.xml中增加plugin插件,忘记加会报“清单找不到”异常。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
打包
1.5.2 执行jar包
进入到jar所在路径,然后执行java直接运行jar文件,启动web服务
java -jar hello-0.0.1-SNAPSHOT.jar
默认8080端口
表示启动成功可以访问了。
1.6 拓展:打war包手动部署
1.6.1 pom.xml
1.6.2 WebApplication
继承SpringBootServletInitializer覆盖基类的configure方法
package com.company.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class WebApplication extends SpringBootServletInitializer {
@Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return super.configure(builder);
}
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}