隨著企業(yè)對大型項(xiàng)目的開發(fā),部署,性能,要求越來越高,最近2年引入的微服務(wù)的概念,以及spring cloud實(shí)現(xiàn)。讓微服務(wù)成為了現(xiàn)在大型企業(yè)項(xiàng)目的首選技術(shù),今天給大家講解一下,搭建微服務(wù)項(xiàng)目的基礎(chǔ)技術(shù)springboot,按下列操作任何人都可以搭建屬于自己的一個微服務(wù)基礎(chǔ)平臺。
springboot
Spring boot的優(yōu)點(diǎn)
輕松創(chuàng)建獨(dú)立的Spring應(yīng)用程序。
內(nèi)嵌Tomcat、jetty等web容器,不需要部署WAR文件。
提供一系列的“starter” 來簡化的Maven配置。
開箱即用,盡可能自動配置Spring。
spring boot 快速入門
通過構(gòu)建簡單的REST應(yīng)用,了解spring boot的開發(fā)基本流程,驗(yàn)證其簡單、易用特性。
環(huán)境要求
Spring Boot 2.0.0.BUILD-SNAPSHOT 要求 Java 8 和 Spring Framework 5.0.2以上,Maven 3.2 以上或者Gradle 4。
本文使用 Spring Boot 1.5.9 、 Java8 和 Spring Framework 5.0.2.RELEASE以上,Maven 3.2。開發(fā)工具使用sping官方提供的spring suit tool 3.9.1(STS)。
創(chuàng)建項(xiàng)目
在STS中,通過NEW->Spring starter project創(chuàng)建spring boot 項(xiàng)目。
輸入maven的group 和artifact。
選擇spring boot版本和starter
點(diǎn)擊下一步,進(jìn)入如下界面。
選擇spring boot的版本,這里選擇1.5.9 版本。
選擇starter,通過搜索找到web 并勾選。點(diǎn)擊完成。
創(chuàng)建項(xiàng)目的結(jié)構(gòu)
點(diǎn)擊finish 按鈕。創(chuàng)建項(xiàng)目如下:
目錄結(jié)構(gòu)如圖。
Src/main/java。編寫代碼存放的目錄。自動生成了程序入口代碼 SpringBootDemo1Application.java。
Src/main/resources。資源文件存放目錄。自動生成了配置文件 application.properties
Src/test/java。測試代碼存放目錄。自動生成了測試代碼SpringBootDemo1ApplicationTests.java
POM文件說明
spring boot項(xiàng)目默認(rèn)使用maven來構(gòu)建,生成的POM文件如下:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.yuny
demo1
0.0.1-SNAPSHOT
jar
spring-boot-demo1
Demo project for Spring Boot
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
UTF-8
UTF-8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
其中,
設(shè)置spring-boot-starter-parent為父親項(xiàng)目
這種方式可以比較容易的使用父項(xiàng)目中的starters的依賴。 當(dāng)然也可以不用繼承spring-boot-starter-parent為父親,這種方式在以后我們會介紹。
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
引入web依賴
Web starter依賴引入,會增加web容器、springweb、springmvc、jackson-databind等相關(guān)的依賴。
org.springframework.boot
spring-boot-starter-web
依賴層級關(guān)系如圖
引入測試依賴
org.springframework.boot
spring-boot-starter-test
test
啟動程序SpringBootDemo1Application 說明
我們通過此類的main函數(shù)來啟動spring boot程序。
啟動程序SpringBootDemo1Application是自動生成的,代碼如下:
@SpringBootApplication
public class SpringBootDemo1Application {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemo1Application.class, args);
}
}
其中是@SpringBootApplication組合注解,兼?zhèn)淞薂EnableAutoConfiguration和@ComponentScan 注解的功能。
增加一個controller
在包c(diǎn)om.yuny.demo1.controller下面增加類SampleController
7@RestController
public class SampleController {
@RequestMapping("/")
String home() {
return "Hello World!";
}
}
運(yùn)行啟動程序后,訪問http://localhost:8080/就可以訪問這個controller的功能了。
啟動很簡單,直接選擇SpringBootDemo1Application.java文件,使用java application方式運(yùn)行即可:
訪問效果:
測試
增加一個測試類
22mport static org.hamcrest.CoreMatchers.equalTo;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MockServletContext.class)
@WebAppConfiguration
public class SampleControllerTest {
private MockMvc mock;
@Before
public void setUp() throws Exception {
mock = MockMvcBuilders.standaloneSetup(new SampleController()).build();
}
@Test
public void testHome() throws Exception {
mock.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo("Hello World!")));