什么是springboot?
筆者喜歡以“貌”取人,從字面意思上得到spring可能要booter化了*)
聯(lián)想到j(luò)ava的bootstrap classloader,這里你不得不產(chǎn)生對(duì)它的向往了。當(dāng)然springboot是這樣作自我介紹的:“使用我,可以快速的搭建一個(gè)完整的spring應(yīng)用”,以前在學(xué)習(xí)spring時(shí),spring自己說它是一個(gè)輕量級(jí)的框架,可是在開發(fā)時(shí) 每次都要配置這么多的xml 并沒有人讓覺覺輕量級(jí)。當(dāng)然這么理解是有問題的,spring兩個(gè)核心IOC和Aop支撐起來這個(gè)框架。以及后來陸陸續(xù)續(xù)家族越來越強(qiáng)大,當(dāng)然今天這個(gè)家族成員springboot 是非常讓人激動(dòng)的產(chǎn)品,springboot = spring*。在如今應(yīng)用服務(wù)化的時(shí)代下,springcloud也足夠讓人驚艷,筆者之前很崇拜dubbo,很強(qiáng)大的RPC框架,對(duì)比這后springcloud有更強(qiáng)大的存在。今天主角是springboot。當(dāng)然,springboot與springcloud亦是天作之合。
springboot vs sping*
springboot 秉承著約定大于配置的思想成功的吸引了眾多的開發(fā)者。
ssm結(jié)構(gòu)是如今用的挺多的結(jié)構(gòu)。非常的方便,配置spring的上下文(context)有點(diǎn)太機(jī)械化了,而且對(duì)于web項(xiàng)目來講tomcat的部署也是必須的(這不是廢話嗎?)還有 每次maven或gradle中依賴密密麻麻的jar包,在springboot中一切都是可以優(yōu)化的。springboot 秉承著約定大于配置的思想成功的吸引了眾多的開發(fā)者。今天筆者就簡(jiǎn)單的做一個(gè)springboot項(xiàng)目的例子
IDEA+maven 構(gòu)建
①新建一個(gè)maven web項(xiàng)目
②編輯pom添加依賴
<?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>is.jack.boots</groupId>
<artifactId>boot</artifactId>
<version>1.0-SNAPSHOT</version>
<!--添加springboot的家族長(zhǎng)老 ^_^ 方便管理依賴版本 以及后續(xù)支持?jǐn)?shù)據(jù)持久化 緩存 模板引擎 中間件等等-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
</parent>
<!-- springboot 依賴核心 一個(gè)jar包 包羅眾多spring 組件 以及 tomcat -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- maven spring 插件 用于maven打包管理 以及maven命令化springboot -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
③啟動(dòng)項(xiàng)目
對(duì)呀!以上兩部就完成項(xiàng)目的配置了.now,你只需要啟動(dòng)項(xiàng)目就行
以往的spring項(xiàng)目都得deployed成war包 然后發(fā)布到tomcat中去。而springboot-starter-web jar包中有以下結(jié)構(gòu)
傳統(tǒng)的spring的 bean,context,aop,web,mvc,core,slf4j加上tomcat,jackson等統(tǒng)統(tǒng)一網(wǎng)打進(jìn)。
這是springboot 第一處強(qiáng)大的地方
接著 回到正題啟動(dòng)它
新建一個(gè)啟動(dòng)入口(新建一個(gè)main入口)
package io.entry;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import java.util.Arrays;
@SpringBootApplication
public class Excute {
public static void main(String[] args){
//這里執(zhí)行結(jié)束,項(xiàng)目就啟動(dòng)了 下面的被@Bean的方法可以根據(jù)自己需求添加
SpringApplication.run(Excute.class,args);
}
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext ctx) {
//傳統(tǒng)spring項(xiàng)目中監(jiān)聽組件使用的是ApplicationListener
//在springboot中使用的是CommandLineRunner 并且這個(gè)會(huì)自動(dòng)幫你添加springboot中的組件
// -> java8 中新增的表達(dá)式 lamuda ps: java是不會(huì)眼睜睜的看著讓其他簡(jiǎn)潔的語言隨便超越,
//所以java出的一些新特性也是值得關(guān)注的,順便消化一下
return args -> {
System.out.println("我可以打印出springboot 所用的組件或模塊了");
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for (String beanName : beanNames) {
System.out.println(beanName);
}
};
}
}
建立一個(gè)REST風(fēng)格的controller
什么是REST ?你經(jīng)常會(huì)用到ajax吧,使用一個(gè)uri請(qǐng)求的到了一個(gè)son或xml等等的數(shù)據(jù)。ok,這就是REST風(fēng)格,而不是你經(jīng)常使用的MVC中向你返回一個(gè)view。回到這里 REpresentation State Transfer 資源表屬性轉(zhuǎn)移 就是REST,他是一種架構(gòu)約束。
package io.entry;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//@RestController相當(dāng)于 @RequestMapping + @Responsebody
@RestController
public class Controller {
@RequestMapping("/")
public String tr(){
return "hello springboot!";
}
}
執(zhí)行main方法 啟動(dòng)了該項(xiàng)目
③使用springboot maven插件執(zhí)行項(xiàng)目
在終端輸入 mvn package target/boot-1.0-SNAPSHOT.jar
將項(xiàng)目打成jar包
再輸入 java -jar target/boot-1.0-SNAPSHOT.jar
這里springboot maven 插件會(huì)自動(dòng)找到main函數(shù)執(zhí)行 springboot
當(dāng)然上述操作完成后 開啟工程還有個(gè)方法
使用操作系統(tǒng)終端(windows 是cmd)
打開終端進(jìn)入你的工程路徑里 輸入 mvn spring-boot:run
瀏覽器測(cè)試
今天完成了springboot的初次體驗(yàn),相信很多的開發(fā)者會(huì)對(duì)它產(chǎn)生了很不錯(cuò)的印象,往后的幾次將持續(xù)更新springboot 系列。
https://github.com/jack210481/boot.git