SpringBoot框架:第一章:基礎(chǔ)配置和介紹
什么是Spring Boot?
Spring Boot就是一些庫的集合,它能夠被任意項(xiàng)目的構(gòu)建系統(tǒng)所使用,簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,簡化配置,用更簡單的辦法整合第三方其他技術(shù)。
使用spring boot有什么好處
其實(shí)就是簡單、快速、方便!
平時(shí)如果我們需要搭建一個(gè)spring web項(xiàng)目的時(shí)候需要怎么做呢?
配置web.xml,加載spring和spring mvc
配置數(shù)據(jù)庫連接、配置spring事務(wù)
配置加載配置文件的讀取,開啟注解
配置日志文件
…
配置完成之后部署tomcat 調(diào)試
使用sping boot到底有多爽
一、SpringBoot的作用
簡化配置文件
以更簡單的方式整合第三方技術(shù)
Redis
ElasticSearch
MyBatis
……
二、使用SpringBoot的套路
加入需要的場景starter依賴
配置properties或yml
創(chuàng)建主啟動(dòng)類
通過注解開啟相關(guān)功能
運(yùn)行主啟動(dòng)類
三、HelloWorld
1.操作步驟
①創(chuàng)建Maven工程
②加入依賴
<!-- 繼承SpringBoot官方指定的父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
</parent>
<dependencies>
<!-- 加入Web開發(fā)所需要的場景啟動(dòng)器 -->
<dependency>
<!-- 指定groupId和artifactId即可,版本已在父工程中定義 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
③創(chuàng)建主啟動(dòng)類
④創(chuàng)建HelloWorldHandler,現(xiàn)在創(chuàng)建的hanlder不會(huì)自動(dòng)掃描,因?yàn)橹挥兄鲉?dòng)類的子包才會(huì)自動(dòng)掃描
下面這個(gè)才正確
SpringBootHelloWorld
/**
*
* 啟動(dòng)類
*
*/
@SpringBootApplication
public class SpringBootHelloWorld {
public static void main(String[] args) {
SpringApplication.run(SpringBootHelloWorld.class, args);
}
}
⑤啟動(dòng)
運(yùn)行主啟動(dòng)類中的main方法啟動(dòng)SpringBoot程序。
⑥通過網(wǎng)頁訪問handler方法
2.原理探究
①核心機(jī)制
注意:
spring boot默認(rèn)會(huì)加載org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration類,
DataSourceAutoConfiguration類使用了@Configuration注解向spring注入了dataSource bean。
因?yàn)楣こ讨腥绻麤]有關(guān)于dataSource相關(guān)的配置信息,當(dāng)spring創(chuàng)建dataSource bean因缺少相關(guān)的信息就會(huì)報(bào)錯(cuò)。
在Application類上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
阻止spring boot自動(dòng)注入dataSource
bean,后面加上了druid有了dataSoure配置,就不需要加這個(gè)注解@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
@SpringBootConfiguration:組合了 @Configuration 注解,實(shí)現(xiàn)配置文件的功能。
@EnableAutoConfiguration:打開自動(dòng)配置的功能,也可以關(guān)閉某個(gè)自動(dòng)配置的選項(xiàng),如關(guān)閉數(shù)據(jù)源自動(dòng)配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring組件掃描。
四、SpringBoot環(huán)境下配置文件
1.總述
SpringBoot環(huán)境下常用的配置文件有兩種,一種是properties屬性文件,一種是yml文件。二者各有特點(diǎn),語法也有很大區(qū)別,但是最終效果基本一致。
2.properties文件使用
文件名:application.properties
properties文件語法格式:
server.port=8074
spring.datasource.url=jdbc:mysql://localhost:3306/gmall?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.mapper-locations=classpath:mapper/*Mapper.xml
spring.dubbo.registry.protocol=zookeeper
spring.dubbo.registry.address=192.168.0.100:2181
spring.dubbo.application.name=gmall-cart-service
spring.dubbo.protocol.name=dubbo
spring.dubbo.base-package=com.javawxid
logging.level.root=info
spring.redis.host=192.168.0.100
spring.redis.port=6379
spring.redis.database=0
3.yml文件的使用
①yml簡介
yml是YAML(YAML Ain’t Markup Language)語言的文件,以數(shù)據(jù)為中心,比json、xml等更適合做配置文件。
②yml語法
使用縮進(jìn)表示層級關(guān)系
縮進(jìn)時(shí)不允許使用Tab鍵,只允許使用空格。
縮進(jìn)的空格數(shù)目不重要,只要相同層級的元素左側(cè)對齊即可
大小寫敏感
③YAML 支持的三種數(shù)據(jù)結(jié)構(gòu)
對象:鍵值對的集合
數(shù)組:一組按次序排列的值
字面量:單個(gè)的、不可再分的值
yml文件語法格式:
server:
port: 8443 #開發(fā)環(huán)境會(huì)開啟https
ssl:
key-store: keystore.p12
key-alias: tomcat
key-store-password: 123456
key-store-type: PKCS12
spring:
datasource:
url: jdbc:mysql://localhost:3306/mall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 123456
druid:
initial-size: 5 #連接池初始化大小
min-idle: 10 #最小空閑連接數(shù)
max-active: 20 #最大連接數(shù)
web-stat-filter:
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不統(tǒng)計(jì)這些請求數(shù)據(jù)
stat-view-servlet: #訪問監(jiān)控網(wǎng)頁的登錄用戶名和密碼
login-username: druid
login-password: druid
data:
mongodb:
host: localhost
port: 27017
database: mall-port
redis:
host: 192.168.0.135 # Redis服務(wù)器地址
database: 0 # Redis數(shù)據(jù)庫索引(默認(rèn)為0)
port: 6379 # Redis服務(wù)器連接端口
password: # Redis服務(wù)器連接密碼(默認(rèn)為空)
jedis:
pool:
max-active: 8 # 連接池最大連接數(shù)(使用負(fù)值表示沒有限制)
max-wait: -1ms # 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒有限制)
max-idle: 8 # 連接池中的最大空閑連接
min-idle: 0 # 連接池中的最小空閑連接
timeout: 3000ms # 連接超時(shí)時(shí)間(毫秒)
rabbitmq:
host: 192.168.0.135
port: 5672
virtual-host: /mall
username: mall
password: mall
publisher-confirms: true #如果對異步消息需要回調(diào)必須設(shè)置為true
# 日志配置
logging:
level:
org.springframework.data.mongodb.core: debug
com.macro.mall.mapper: debug
com.macro.mall.portal.dao: debug
常見的SpringBoot依賴
pom.xml
<!--繼承spring-boot-starter-parent,要成為一個(gè)spring boot項(xiàng)目,首先就必須在pom.xml中繼承spring-boot-starter-parent,同時(shí)指定其版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 環(huán)境參數(shù),在普通maven項(xiàng)目中,需要在pom.xml中配置插件來修改jdk版本,utf-8編碼等環(huán)境參數(shù),在spring boot中則更加簡單。
在eclipse中按ctrl+左鍵點(diǎn)擊上面的spring-boot-starter-parent,查看其源碼 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- 編譯字符編碼為utf-8 -->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><!-- 輸出字符編碼為UTF-8 -->
<java.version>1.8</java.version><!-- jdK版本 -->
</properties>
<dependencies>
<!--核心依賴,包括auto-configuration , logging和YAML。-->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>-->
<!-- 測試 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--springmvc,代表web模塊,在這個(gè)模塊中含了許多JAR包,有spring相關(guān)的jar,內(nèi)置tomcat服務(wù)器,jackson等,這些web項(xiàng)目中常用的的功能都會(huì)自動(dòng)引入-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--數(shù)據(jù)庫連接池-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- MyBatis 生成器 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.3</version>
</dependency>
<!-- MyBatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--Mysql數(shù)據(jù)庫驅(qū)動(dòng)-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<!-- dataSource相關(guān)的配置信息DruidDataSource-->
<!--集成druid連接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
<!-- 編譯生成可執(zhí)行jar文件,默認(rèn)情況下,maven打包生成的jar文件是用來給其他項(xiàng)目依賴用的,是無法直接運(yùn)行的。
spring boot根據(jù)自生需要,提供了一個(gè)插件來生成可執(zhí)行jar文件。在spring-boot-starter-parent源碼中可以找到 -->
<build>
<!--在瀏覽器中的訪問路徑,如果將它改成helloworld,再執(zhí)行maven--update,這時(shí)運(yùn)行項(xiàng)目的訪問路徑是
http://localhost:8080/helloworld/ 而不是項(xiàng)目名的 http://localhost:8080/test-->
<!--<finalName>demo</finalName>-->
<!-- 在自己項(xiàng)目的pom.xml中聲明這個(gè)插件,就會(huì)生效 -->
<plugins>
<!-- maven插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>