什么是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工程
②加入依赖
代码语言:javascript复制<!-- 继承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
代码语言:javascript复制/**
*
* 启动类
*
*/
@SpringBootApplication
public class SpringBootHelloWorld {
public static void main(String[] args) {
SpringApplication.run(SpringBootHelloWorld.class, args);
}
}
⑤启动
运行主启动类中的main方法启动SpringBoot程序。
⑥通过网页访问handler方法
2.原理探究
①核心机制
注意:
代码语言:javascript复制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})
代码语言:javascript复制@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项,如关闭数据源自动配置功能:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。
四、SpringBoot环境下配置文件
1.总述
SpringBoot环境下常用的配置文件有两种,一种是properties属性文件,一种是yml文件。二者各有特点,语法也有很大区别,但是最终效果基本一致。
2.properties文件使用
文件名:application.properties
properties文件语法格式:
代码语言:javascript复制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文件语法格式:
代码语言:javascript复制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
代码语言:javascript复制 <!--继承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>