springboot簡單介紹
概述
隨著動(dòng)態(tài)語言的流行(Ruby、Groovy、Scala、Node.js),Java的開發(fā)顯得格外的笨重:繁多的配置、低下的開發(fā)效率、復(fù)雜的部署流程以及第三方技術(shù)集成難度大。
在上述環(huán)境下,Springboot應(yīng)運(yùn)而生。它使用”習(xí)慣優(yōu)于配置”(項(xiàng)目中存在大量的配置,此外還內(nèi)置一個(gè)習(xí)慣性的配置,讓你無須手動(dòng)進(jìn)行配置)的理念讓你的項(xiàng)目快速運(yùn)行起來。使用springboot很容易創(chuàng)建一個(gè)獨(dú)立運(yùn)行(運(yùn)行jar,內(nèi)嵌servlet容器)、準(zhǔn)生產(chǎn)級(jí)別的基于Spring框架的項(xiàng)目,使用springboot你可以不用或者只需要很少的Spring配置。
Spring Boot 的核心功能
獨(dú)立運(yùn)行的Spring項(xiàng)目
Spring Boot可以以jar包的形式獨(dú)立運(yùn)行,運(yùn)行一個(gè)Spring Boot項(xiàng)目只需要通過java -jar xx.jar。
內(nèi)置Servlet容器
Spring Boot可選擇內(nèi)嵌Tomcat、Jetty或者Undertow,這樣無須以war包形式部署。
提供starter簡化maven配置
Spring提供了一系列的starter pom來簡化maven依賴加載,例如:當(dāng)你使用了spring-boot-starter-web時(shí),會(huì)自動(dòng)加入相關(guān)依賴,無需你手動(dòng)一個(gè)一個(gè)的添加坐標(biāo)依賴。
自動(dòng)配置Spring
Spring Boot會(huì)根據(jù)在類路徑中的jar包、類,為jar包里的類自動(dòng)配置Bean,這樣會(huì)極大地減少我們要使用的配置。當(dāng)然,Spring Boot只是考慮了大多數(shù)的開發(fā)場景,并不是所有場景,若在實(shí)際開發(fā)中,我們需要自動(dòng)配置bean,而Spring Boot沒有提供支持,則可以自定義自動(dòng)配置。
無代碼生成和xml配置
Spring Boot的神奇的不是借助于代碼生成來實(shí)現(xiàn)的,而是通過條件注解來實(shí)現(xiàn)的,這是Spring 4.x提供的新特性,Spring 4.x提倡使用java配置和注解配置相結(jié)合,而Spring Boot不需要任何xml配置即可實(shí)現(xiàn)Sping Boot的所有配置。
優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
快速構(gòu)建項(xiàng)目:省略了繁瑣且重復(fù)的xml配置,分分鐘構(gòu)建一個(gè)web工程;
對(duì)主流開發(fā)框架的無配置集成:提供了很多Starter 依賴包,開箱即用,無需多余配置;
項(xiàng)目可獨(dú)立運(yùn)行:無需外部依賴Servlet容器;
極大地提供了開發(fā)、部署效率;
監(jiān)控簡單:提供了actuator包,可以使用它來對(duì)你的應(yīng)用進(jìn)行監(jiān)控。
缺點(diǎn)
依賴太多:一個(gè)簡單的SpringBoot應(yīng)用都有好幾十M只有;
缺少監(jiān)控集成方案、安全管理方案:只提供基礎(chǔ)監(jiān)控,要實(shí)現(xiàn)生產(chǎn)級(jí)別的監(jiān)控,監(jiān)控方案需要自己動(dòng)手解決;(后期講解soringCloud時(shí),會(huì)結(jié)合pinpoint和skywalking分布式鏈路工具進(jìn)行應(yīng)用監(jiān)控)
工程搭建
使用的工具為:Spring Tool Suite(3.9.3.RELEASE) SpringBoot:1.5.14.RELEASE
Spring Tool Suite 下載地址:https://spring.io/tools/sts/all
創(chuàng)建項(xiàng)目
利用**Spring Initializr**進(jìn)行快速創(chuàng)建項(xiàng)目
選擇Dashboard–>CREATE SPRING STARTER PROJECT進(jìn)行創(chuàng)建項(xiàng)目,或者可以選擇file–>new–>Spring Starter Project,打開創(chuàng)建面板
第一種方式:
第二種方式:
出現(xiàn)創(chuàng)建面板,填寫項(xiàng)目信息
這里url建議直接填寫:https://start.spring.io(默認(rèn)是http方式)
maven相關(guān)命名說明
Group:一般為逆向域名格式,如本博客域名為lqdev.cn,則group一般以cn.lqdev開頭
Artifact:唯一標(biāo)識(shí),一般為項(xiàng)目名稱。 具體maven相關(guān)信息,可自行搜索,這里只簡單闡述
選擇依賴包和版本
除此下載包時(shí),可能會(huì)比較慢,建議替換成阿里云的maven鏡像
項(xiàng)目結(jié)構(gòu)
- src
-main
-java
-cn.lqdev.learning.springboot.chapter1
#主函數(shù),啟動(dòng)類,運(yùn)行它如果運(yùn)行了 Tomcat、Jetty、Undertow 等容器
-Chapter1Application
-resouces
#存放靜態(tài)資源 js/css/images 等
- statics
#存放 html 模板文件
- templates
#主要的配置文件,SpringBoot啟動(dòng)時(shí)候會(huì)自動(dòng)加載application.properties/bootstrap.properties
- application.properties
#測試文件存放目錄
-test
# pom.xml 文件是Maven構(gòu)建的基礎(chǔ),里面包含了我們所依賴JAR和Plugin的信息
- pom
pom依賴
由于使用了Spring Initializr直接創(chuàng)建項(xiàng)目,相關(guān)依賴自動(dòng)添加好了。
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
cn.lqdev.learning
springboot-chapter1
0.0.1-SNAPSHOT
jar
chapter-1
Spring Boot | 第一章:第一個(gè)Springboot應(yīng)用
org.springframework.boot
spring-boot-starter-parent
1.5.14.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
主入口
/**
* 啟動(dòng)類
* @author oKong
*
*/
@SpringBootApplication
public?class?Chapter1Application {
public?static?void?main(String[] args) {
SpringApplication.run(Chapter1Application.class, args);
}
}
編寫controller
/**
* 第一個(gè)springboot應(yīng)用
* @author oKong
*
*/
//@RestController = @Controller + @ResponseBody 默認(rèn)直接返回json
@RestController
public?class?DemoController {
@RequestMapping(value = "/demo", method = RequestMethod.GET)
public?String demo() {
return?"hello,SpringBoot!";
}
}
啟動(dòng)應(yīng)用
直接Chapter1Application,右鍵 run as –> Spring Boot App 即可。
看見以下提示,說明啟動(dòng)成功:
1
2018-07-11 22:47:38.170 INFO 15396 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
簡單說明
springboot 默認(rèn)的端口號(hào)為:8080,此時(shí)瀏覽器訪問:127.0.0.1:8080/demo即可查看。
需要修改默認(rèn)端口號(hào)時(shí)及上下文路徑時(shí),只需要在application.properties設(shè)置以下屬性:
# 端口號(hào)
server.port=8888
# 應(yīng)用上下文路徑
server.context-path=/chapter1
訪問:http://127.0.0.1:8888/chapter1/demo
自此,一個(gè)簡單的SpringBoot就開發(fā)完成了。比起原來的springmvc時(shí)的開發(fā)效率,簡直是一個(gè)質(zhì)的飛躍,無需再煩擾煩人的xml配置文件了。終于可以快樂的擼代碼了~
總結(jié)
目前互聯(lián)網(wǎng)上很多大佬都有springboot系列教程,如有雷同,請(qǐng)多多包涵了。
如果你現(xiàn)在在JAVA這條路上掙扎,也想在IT行業(yè)拿高薪,可以參加我們的訓(xùn)練營課程,選擇最適合自己的課程學(xué)習(xí),技術(shù)大牛親授,7個(gè)月后,進(jìn)入名企拿高薪。我們的課程內(nèi)容有:Java工程化、高性能及分布式、高性能、深入淺出。高架構(gòu)。性能調(diào)優(yōu)、Spring,MyBatis,Netty源碼分析和大數(shù)據(jù)等多個(gè)知識(shí)點(diǎn)。如果你想拿高薪的,想學(xué)習(xí)的,想就業(yè)前景好的,想跟別人競爭能取得優(yōu)勢的,想進(jìn)阿里面試但擔(dān)心面試不過的,你都可以來,q群號(hào)為:835638062
注:加群要求
1、具有1-5工作經(jīng)驗(yàn)的,面對(duì)目前流行的技術(shù)不知從何下手,需要突破技術(shù)瓶頸的可以加。
2、在公司待久了,過得很安逸,但跳槽時(shí)面試碰壁。需要在短時(shí)間內(nèi)進(jìn)修、跳槽拿高薪的可以加。
3、如果沒有工作經(jīng)驗(yàn),但基礎(chǔ)非常扎實(shí),對(duì)java工作機(jī)制,常用設(shè)計(jì)思想,常用java開發(fā)框架掌握熟練的,可以加。
4、覺得自己很牛B,一般需求都能搞定。但是所學(xué)的知識(shí)點(diǎn)沒有系統(tǒng)化,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加。
5.阿里Java高級(jí)大牛直播講解知識(shí)點(diǎn),分享知識(shí),多年工作經(jīng)驗(yàn)的梳理和總結(jié),帶著大家全面、科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知!