SpringBoot框架:第一章:基础配置和介绍

什么是Spring Boot?

Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用,简化新Spring应用的初始搭建以及开发过程,简化配置,用更简单的办法整合第三方其他技术。
在这里插入图片描述























使用spring boot有什么好处

其实就是简单、快速、方便!

平时如果我们需要搭建一个spring web项目的时候需要怎么做呢?

配置web.xml,加载spring和spring mvc
配置数据库连接、配置spring事务
配置加载配置文件的读取,开启注解
配置日志文件

配置完成之后部署tomcat 调试

使用sping boot到底有多爽

一、SpringBoot的作用

简化配置文件

以更简单的方式整合第三方技术
    Redis
    ElasticSearch
    MyBatis
    ……

二、使用SpringBoot的套路

加入需要的场景starter依赖
配置properties或yml
创建主启动类
通过注解开启相关功能
运行主启动类

三、HelloWorld
1.操作步骤
①创建Maven工程
在这里插入图片描述













②加入依赖

<!-- 继承SpringBoot官方指定的父工程 -->	
    <parent>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-parent</artifactId>
    	<version>1.5.8.RELEASE</version>
    </parent>
     
    <dependencies>
    	<!-- 加入Web开发所需要的场景启动器 -->
    	<dependency>
    		<!-- 指定groupId和artifactId即可,版本已在父工程中定义 -->
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    </dependencies>

③创建主启动类
在这里插入图片描述
















④创建HelloWorldHandler,现在创建的hanlder不会自动扫描,因为只有主启动类的子包才会自动扫描
在这里插入图片描述

























下面这个才正确
在这里插入图片描述










SpringBootHelloWorld

/**
 * 
 * 启动类
 *
 */
@SpringBootApplication
public class SpringBootHelloWorld {
 
	 public static void main(String[] args) {
	        SpringApplication.run(SpringBootHelloWorld.class, args);
     }
}

⑤启动

运行主启动类中的main方法启动SpringBoot程序。
⑥通过网页访问handler方法
在这里插入图片描述











2.原理探究
①核心机制
在这里插入图片描述













在这里插入图片描述
























注意:

spring boot默认会加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类,
DataSourceAutoConfiguration类使用了@Configuration注解向spring注入了dataSource bean。
因为工程中如果没有关于dataSource相关的配置信息,当spring创建dataSource bean因缺少相关的信息就会报错。
在Application类上增加@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
阻止spring boot自动注入dataSource bean,后面加上了druid有了dataSoure配置,就不需要加这个注解@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。

四、SpringBoot环境下配置文件
1.总述

SpringBoot环境下常用的配置文件有两种,一种是properties属性文件,一种是yml文件。二者各有特点,语法也有很大区别,但是最终效果基本一致。
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)语言的文件,以数据为中心,比json、xml等更适合做配置文件。
②yml语法

使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
大小写敏感

③YAML 支持的三种数据结构

对象:键值对的集合
数组:一组按次序排列的值
字面量:单个的、不可再分的值

yml文件语法格式:

server:
  port: 8443 #开发环境会开启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 #最小空闲连接数
      max-active: 20 #最大连接数
      web-stat-filter:
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据
      stat-view-servlet: #访问监控网页的登录用户名和密码
        login-username: druid
        login-password: druid
 
  data:
    mongodb:
      host: localhost
      port: 27017
      database: mall-port
 
  redis:
    host: 192.168.0.135 # Redis服务器地址
    database: 0 # Redis数据库索引(默认为0)
    port: 6379 # Redis服务器连接端口
    password: # Redis服务器连接密码(默认为空)
    jedis:
      pool:
        max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
        max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
        max-idle: 8 # 连接池中的最大空闲连接
        min-idle: 0 # 连接池中的最小空闲连接
    timeout: 3000ms # 连接超时时间(毫秒)
 
  rabbitmq:
    host: 192.168.0.135
    port: 5672
    virtual-host: /mall
    username: mall
    password: mall
    publisher-confirms: true #如果对异步消息需要回调必须设置为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,要成为一个spring boot项目,首先就必须在pom.xml中继承spring-boot-starter-parent,同时指定其版本-->
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.8.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
     
    <!-- 环境参数,在普通maven项目中,需要在pom.xml中配置插件来修改jdk版本,utf-8编码等环境参数,在spring boot中则更加简单。
        在eclipse中按ctrl+左键点击上面的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模块,在这个模块中含了许多JAR包,有spring相关的jar,内置tomcat服务器,jackson等,这些web项目中常用的的功能都会自动引入-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
     
            <!--数据库连接池-->
            <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数据库驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.15</version>
            </dependency>
            <!-- dataSource相关的配置信息DruidDataSource-->
            <!--集成druid连接池-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
     
     
        </dependencies>
     
        <!-- 编译生成可执行jar文件,默认情况下,maven打包生成的jar文件是用来给其他项目依赖用的,是无法直接运行的。
        spring boot根据自生需要,提供了一个插件来生成可执行jar文件。在spring-boot-starter-parent源码中可以找到 -->
        <build>
            <!--在浏览器中的访问路径,如果将它改成helloworld,再执行maven&#45;&#45;update,这时运行项目的访问路径是
            http://localhost:8080/helloworld/   而不是项目名的  http://localhost:8080/test-->
            <!--<finalName>demo</finalName>-->
            <!-- 在自己项目的pom.xml中声明这个插件,就会生效 -->
            <plugins>
                <!-- maven插件 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>