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