springboot学习笔记1:springboot入门
1.什么是springboot
springboot是spring生態(tài)圈的一個(gè)輕量級(jí)的框架,換句話說(shuō)springboot就是spring,是spring的一個(gè)衍生版本。
使用spring框架,項(xiàng)目搭建完畢,spring無(wú)法實(shí)現(xiàn)任何代碼,也就是需要開發(fā)人員自己去配置連接數(shù)據(jù)庫(kù),配置需要集成的框架mybatis,shiro等,以及對(duì)集成進(jìn)來(lái)的框架進(jìn)行xml配置,需要開發(fā)人員自己編寫配置文件,自己進(jìn)行整合。
springboot框架其實(shí)就是已經(jīng)集成好的框架的spring,就像是maven集成了很多的jar包一樣,springboot繼承好了很多的框架,在使用時(shí),直接根據(jù)springboot提供的標(biāo)準(zhǔn)編寫即可,不在需要配置xml文件。maven的思想是:約定優(yōu)于依賴,springboot的思想是:約定優(yōu)于配置。springboot官方給出的解釋就是干掉xml文件,使用java代碼進(jìn)行編寫配置。
面試題:如何區(qū)分輕量級(jí)重量級(jí)?
在項(xiàng)目中輕量級(jí)的框架會(huì)對(duì)自己項(xiàng)目中的代碼有很少的侵入,如:
hibernate:自動(dòng)生成sql語(yǔ)句,使用hql編輯sql語(yǔ)句,如果有一天不使用這個(gè)框架了,那么就需要再自己寫sql語(yǔ)句
mybatis:不使用該框架時(shí),里面的sql語(yǔ)句仍然可以使用
2.為什么要使用springboot?
傻瓜式開發(fā),減少了大量的配置,降低了開發(fā)人員的標(biāo)準(zhǔn),低層次的開發(fā)人員也可以進(jìn)行業(yè)務(wù)邏輯的編寫,無(wú)需知道內(nèi)部運(yùn)行原理以及框架的集成和整合。
4.怎樣使用springboot?
目標(biāo):使用springboot在瀏覽器顯示hello world!
準(zhǔn)備,創(chuàng)建maven工程,引入springboot的依賴:
<?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.zs.springboot</groupId><artifactId>springboot</artifactId><version>1.0-SNAPSHOT</version><!--將maven工程的父類設(shè)置為springboot,就表示該工程時(shí)springboot的一個(gè)子工程--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.6.RELEASE</version></parent><dependencies><!--在springboot中會(huì)定義很多個(gè)starter,每一個(gè)starter都有自己不同的作用web-start:引入項(xiàng)目所運(yùn)行的基礎(chǔ)環(huán)境tomcat:最終springboot會(huì)自動(dòng)把tomcat集成進(jìn)項(xiàng)目中,不再需要使用外部tomcat進(jìn)行啟動(dòng)各種注解@Controller@Service@RequestMapping@ResponseBody--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies> </project> pom我們點(diǎn)開父工程:
按住ctrl鍵點(diǎn)開該父工程可以看到:
?spring-boot-starter-parent?的父工程為?spring-boot-dependencies?,而spring-boot-dependencies是頂級(jí)的父工程,是管理springboot的依賴的,只負(fù)責(zé)管理依賴,就像上一篇maven中的父工程一樣,我們點(diǎn)開
查看父工程,一級(jí)一級(jí)網(wǎng)上看:
?spring-boot-starter-web的父工程是spring-boot-starters
?spring-boot-starters的父工程是spring-boot-parent
?spring-boot-parent的父工程是spring-boot-dependencies,spring-boot-dependencies只是用來(lái)管理jar包的依賴,我們的項(xiàng)目繼承了?spring-boot-starter-parent?,而它與parent雖然不一樣,但是理論上,它在parent中,因此我們的項(xiàng)目就是與內(nèi)部的?spring-boot-starter-web一樣,是平級(jí)的,
yi用一個(gè)圖來(lái)幫助理解:
在上面已經(jīng)繼承springboot,引入了依賴,下面開始使用springboot:
1.編輯啟動(dòng)類@springbootApplication
package com.zs.springboot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class ApplicatonRun {public static void main(String[] args) {SpringApplication.run(ApplicatonRun.class, args);} } /*** 1.注意!!!!!!!ApplicationRun類必須要放在所有業(yè)務(wù)的上一層
* model包
* mapper包
* com.zs.springboot.model
* com.zs.springboot.mapper
* 也就是說(shuō)至少需要把ApplicationRun放在springboot包下
*
* 2.就是springboot的入口類
* 也就是通過這個(gè)類啟動(dòng)整個(gè)項(xiàng)目
* @SpringBootApplication:
* 自動(dòng)加載springboot所需要額配置
* 并且把ApplicationRun類標(biāo)識(shí)為整個(gè)項(xiàng)目的入口類
*
* 3.最終springboot是根據(jù)SpringApplication.run()來(lái)進(jìn)行運(yùn)行的
* 所需要傳遞兩個(gè)參數(shù):
* ApplicationRun.class
* 讓springboot整個(gè)框架知道ApplicationRun類就是整個(gè)項(xiàng)目入口類
* args:main形參
*/
2.編輯controller:
/*** RestController,相當(dāng)于controller和responseBody兩個(gè)注解的合體,使用該注解這個(gè)控制器都返回json對(duì)象*/ @RestController public class TestController {@RequestMapping("/test")public String fun1() {return "hello world";} }運(yùn)行,輸入地址測(cè)試。
5.springboot的運(yùn)行原理:
作用:實(shí)現(xiàn)自動(dòng)配置,
點(diǎn)開springbootApplication注解,
可以看到這是一個(gè)組合注解:
@SpringBootConfiguration:springboot所必須要的基礎(chǔ)配置,相當(dāng)于spring中的application.xml
@EnableAutoConfiguration:允許自動(dòng)加載配置
點(diǎn)開EnableAutoConfiguration注解,這也是一個(gè)組合注解:
@AutoConfigurationPackage:通過掃描包的形式自動(dòng)加載,(例如:mybatis的mapper掃描器)
@Import:導(dǎo)入,與spring配置文件中的improt標(biāo)簽的意思一樣,
AutoConfigurationImportSelector:
EnableAutoConfigurationImportSelector:自動(dòng)加載配置的選擇器(根據(jù)條件進(jìn)行自動(dòng)加載配置)
繼承了AutoConfigurationImportSelector
AutoConfigurationImportSelector類中有一個(gè)方法:
getCandidateConfigurations():根據(jù)某個(gè)特定的條件獲取配置信息
可以看到loadFactoryNames()方法:通過name屬性值來(lái)獲取加載器信息。點(diǎn)擊SpringFactoriesLoader進(jìn)入,可以看到:
?
? 對(duì)源碼進(jìn)行分析:該方法會(huì)加載FACTORIES_RESOURCE_LOCATION也就是spring.factries配置文件中的配置信息,然后返回,
每一個(gè)jar包都有一個(gè)該文件:
loadFactoryNames()方法通過這個(gè)文件來(lái)進(jìn)行加載配置,最后根據(jù)factories文件映射到配置類中,如:
MybatisAutoConfiguration.java是經(jīng)過xml配置文件轉(zhuǎn)換來(lái)的,和xml配置文件一樣的作用
6.配置文件:
添加myatis依賴后,重啟項(xiàng)目會(huì)報(bào)錯(cuò)?原因:找不到數(shù)據(jù)源,需要配置數(shù)據(jù)源
在springboot中配置數(shù)據(jù)庫(kù):
配置文件要按照springboot官方規(guī)定的形式配置,需要使用yml或properties作為配置文件
命名有規(guī)范,必須使用application作為文件名,否則springboot無(wú)法識(shí)別
application.yml或application.properties
存放位置有規(guī)定:
官方推薦把配置文件放在resources目錄(classpath)-->config文件夾
如果config文件夾springboot沒有檢測(cè)到會(huì)從resources目錄下去找
resources:classpath(根目錄)
resources/config
如圖:
#配置servlet #配置端口號(hào) server.port=8888 #配置虛擬路徑 server.servlet.context-path=/zs#配置數(shù)據(jù)源 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456附上常用配置:
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Zs-book1/p/11361034.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的springboot学习笔记1:springboot入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MOSS 2007 User Profi
- 下一篇: 断舍离-笔记2