SpringBoot介紹
官網(wǎng):https://spring.io/projects/spring-boot
官方文檔:https://docs.spring.io/spring-boot/docs/2.3.2.RELEASE/reference/html/index.html
SpringBoot是2014年基于Spring4.0發(fā)布的全新開源的輕量級(jí)框架。它不僅繼承了Spring框架原有的優(yōu)秀特性,而且還通過簡(jiǎn)化配置來(lái)進(jìn)一步簡(jiǎn)化了Spring應(yīng)用的整個(gè)搭建和開發(fā)過程。另外SpringBoot通過集成大量的框架使得依賴包的版本沖突,以及引用的不穩(wěn)定性等問題得到了很好的解決。
特點(diǎn):
- 可以創(chuàng)建獨(dú)立的Spring應(yīng)用程序,基于其Maven或Gradle插件,可以創(chuàng)建可執(zhí)行的jar和war;
- 內(nèi)嵌Tomcat或Jetty等Servlet容器;
- 提供自動(dòng)配置的“starter”依賴項(xiàng)簡(jiǎn)化了創(chuàng)建項(xiàng)目的配置;
- 盡可能自動(dòng)配置Spring容器;
- 提供準(zhǔn)備好的特性,如指標(biāo)、健康檢查和外部化配置;
- 絕對(duì)沒有代碼生成,不需要XML配置。
微服務(wù)
2014年,Matrin Fowler 在論文《Microservices》中提出了微服務(wù)的概念。
簡(jiǎn)而言之,微服務(wù)架構(gòu)風(fēng)格,就像是把一個(gè)單獨(dú)的應(yīng)用程序開發(fā)為一套小服務(wù),每個(gè)小服務(wù)運(yùn)行在自己的進(jìn)程中,并使用輕量級(jí)機(jī)制通信,通常是 HTTP API。這些服務(wù)圍繞業(yè)務(wù)能力來(lái)構(gòu)建,并通過完全自動(dòng)化部署機(jī)制來(lái)獨(dú)立部署。這些服務(wù)使用不同的編程語(yǔ)言書寫,以及不同數(shù)據(jù)存儲(chǔ)技術(shù),并保持最低限度的集中式管理。
原文:https://martinfowler.com/microservices/
環(huán)境準(zhǔn)備
開發(fā)環(huán)境:
- SpringBoot 2.3.2RELEASE
- JDK 1.8+
- Maven 3.3+
IDE:idea2020.1
HelloWorld
目標(biāo):瀏覽器發(fā)送hello請(qǐng)求,服務(wù)器接收并處理請(qǐng)求,響應(yīng)“Hello World!”。
創(chuàng)建Maven工程
添加SpringBoot依賴
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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chan.springboot</groupId>
<artifactId>springboot-01-helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
編寫主程序
package com.demo.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* HelloWorldApplication
*
* @author Chan
* @since 2020/7/29
*/
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloWorldApplication.class, args);
}
}
編寫controller
package com.demo.springboot.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* HelloController
*
* @author Chan
* @since 2020/7/29
*/
@Controller
public class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello() {
return "Hello World!";
}
}
測(cè)試運(yùn)行
見到如上日志,啟動(dòng)成功,項(xiàng)目在8080端口運(yùn)行
瀏覽器輸入http://localhost:8080/hello
創(chuàng)建jar包
pom.xml中添加spring-boot-maven-plugin插件。
<!-- pom.xml中添加spring-boot-maven-plugin插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用maven的package命令可以生成“springboot-01-helloworld-1.0-SNAPSHOT.jar”文件。
運(yùn)行jar包。
JAVA -jar springboot-01-helloworld-1.0-SNAPSHOT.jar