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&#45;&#45;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>