目录
众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的工具,它就是Spring Boot。
只是为了提升Spring开发者的工具,特点:敏捷式、快速开发。
Spring Boot 是由 Pivotal 团队提供的全新框架,2014 年 4 月发布 Spring Boot 1.0 2018 年 3 月 Spring Boot 2.0发布。它是对spring的进一步封装,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。怎么简化的呢?就是通过封装、抽象、提供默认配置等方式让我们更容易使用。
??SpringBoot 基于 Spring 开发。SpringBoot 本身并不提供 Spring 框架的核心特性以及扩展功能,也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。
??关于 SpringBoot 有一句很出名的话就是约定大于配置。采用 Spring Boot 可以大大的简化开发模式,它集成了大量常用的第三方库配置,所有你想集成的常用框架,它都有对应的组件支持,例如 Redis、MongoDB、Jpa、kafka,Hakira 等等。SpringBoot 应用中这些第三方库几乎可以零配置地开箱即用,大部分的 SpringBoot 应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。
独立运行的 Spring 项目
Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。
内嵌 Servlet 容器
Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。
提供 starter 简化 Maven 配置
Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。
提供了大量的自动配置
Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。
自带应用监控
Spring Boot 可以对正在运行的项目提供监控。
无代码生成和 xml 配置
Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。
打开Idea点击 + Create New Project
,选择 Spring Initializr
。
点击Next
下一步。
点击Next
下一步。
点击Next
下一步,最后点击Finish
即可完成SpringBoot项目的创建。
包和类不能乱改,只能在com.zking.springboot01建子包,因为程序只加载Application.java所在包及其子包下的内容。
src/main/java:主程序入口 Application,可以通过直接运行该类来启动SpringBoot应用
src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等。由于我们应用了Web模块,因此产生了 static目录与templates目录,前者用于存放静态资源,如图片、CSS、JavaScript等;后者用于存放Web页面的模板文件。
src/test:单元测试目录,生成的 ApplicationTests 通过 JUnit4实现,可以直接用运行 SpringBoot应用的测试。
application.properties/application.yml:用于存放程序的各种依赖模块的配置信息,比如:服务端口,数据库连接配置等。
server: ?# 配置端口 port: 8080 ?# 项目名 servlet: ? context-path: /
默认情况下,SpringBoot 项目会创建一个名为 Application 的主程序启动类,该类中使用了一个组合注解 @SpringBootApplication,用来开启 Spring Boot 的自动配置,另外该启动类中包含一个 main() 方法,用来启动该项目。
直接运行启动类 HelloworldApplication 中的 main() 方法,便可以启动该项目,结果如下图:
注意:Spring Boot 内部集成了 Tomcat,不需要人为手动配置 Tomcat,开发者只需要关注具体的业务逻辑即可。
为了能比较的清楚的看到效果,我们在 com.zking.springboot01 包下又创建一个 controller 包,并在该包内创建一个名为 HelloController 的 Controller,代码如下:
@RestController public class HelloController { ? ? ?@RequestMapping("/hello") ? ?public String hello(){ ? ? ? ?return "Hello SpringBoot!!!"; ? } }
重启 SpringBoot 项目,然后在地址栏访问 “http://localhost:8080/hello”
配置pom.xml,导入依赖:
<dependency> ? ?<groupId>org.springframework.boot</groupId> ? ?<artifactId>spring-boot-starter-jdbc</artifactId> </dependency> ? <dependency> ? ?<groupId>mysql</groupId> ? ?<artifactId>mysql-connector-java</artifactId> ? ?<version>5.1.44</version> </dependency>
重启SpringBoot项目后,将会提示以下错误:
请修改application.yml或application.properties文件,添加以下配置:
spring: datasource: ? driver-class-name: com.mysql.jdbc.Driver ? type: com.zaxxer.hikari.HikariDataSource ? url: jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf8 ? username: root ? password: 1234
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
配置pom.xml,导入依赖:
<dependency> ? ?<groupId>com.alibaba</groupId> ? ?<artifactId>druid-spring-boot-starter</artifactId> ? ?<version>1.2.15</version> </dependency>
请修改application.yml或application.properties文件,添加以下配置:
spring: datasource: ? ?#1.JDBC ? type: com.alibaba.druid.pool.DruidDataSource ? driver-class-name: com.mysql.jdbc.Driver ? url: jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf8&useSSL=false ? username: root ? password: 1234 ? druid: ? ? ?#2.连接池配置 ? ? ?#初始化连接池的连接数量 大小,最小,最大 ? ? initial-size: 5 ? ? min-idle: 5 ? ? max-active: 20 ? ? ?#配置获取连接等待超时的时间 ? ? max-wait: 60000 ? ? ?#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 ? ? time-between-eviction-runs-millis: 60000 ? ? ?# 配置一个连接在池中最小生存的时间,单位是毫秒 ? ? min-evictable-idle-time-millis: 30000 ? ? validation-query: SELECT 1 FROM DUAL ? ? test-while-idle: true ? ? test-on-borrow: true ? ? test-on-return: false ? ? ?# 是否缓存preparedStatement,也就是PSCache 官方建议MySQL下建议关闭 ? 个人建议如果想用SQL防火墙 建议打开 ? ? pool-prepared-statements: true ? ? max-pool-prepared-statement-per-connection-size: 20 ? ? ?# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 ? ? filter: ? ? ? stat: ? ? ? ? merge-sql: true ? ? ? ? slow-sql-millis: 5000 ? ? ?#3.基础监控配置 ? ? web-stat-filter: ? ? ? enabled: true ? ? ? url-pattern: /* ? ? ? ?#设置不统计哪些URL ? ? ? exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" ? ? ? session-stat-enable: true ? ? ? session-stat-max-count: 100 ? ? stat-view-servlet: ? ? ? enabled: true ? ? ? url-pattern: /druid/* ? ? ? reset-enable: true ? ? ? ?#设置监控页面的登录名和密码 ? ? ? login-username: admin ? ? ? login-password: admin ? ? ? allow: 127.0.0.1 ? ? ? ?#deny: 192.168.1.100
启动SpringBoot项目访问Druid,访问地址:http://localhost:端口号/项目名称/druid/
配置pom.xml,导入依赖:
<dependency> ? <groupId>org.mybatis.spring.boot</groupId> ? <artifactId>mybatis-spring-boot-starter</artifactId> ? <version>1.3.2</version> </dependency>
MyBatis-Spring-Boot-Starter依赖将会提供如下:
自动检测现有的DataSource。
将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入参数进行传递。
将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
自动扫描您的mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到您的bean中。
就是说,使用了该Starter之后,只需要定义一个DataSource即可(application.properties或application.yml中可配置),它会自动创建。
请修改application.yml或application.properties文件,添加以下配置:
#mybatis配置 mybatis: ?#配置SQL映射文件路径 mapper-locations: classpath:mapper/*.xml ?#配置别名 type-aliases-package: com.zking.项目名.model
在启动类上添加@MapperScan
注解:
@MapperScan({"com.zking.springboot01.mapper"}) @SpringBootApplication public class SpringBoot01Application { public static void main(String[] args) { SpringApplication.run(SpringBoot01Application.class,args); } }
配置pom.xml,导入依赖:
#log日志配置 logging: level: #指定项目目录输入日志信息 com.zking.项目名.mapper: debug
配置pom.xml,导入依赖:
<dependency> ? ?<groupId>com.github.pagehelper</groupId> ? ?<artifactId>pagehelper-spring-boot-starter</artifactId> ? ?<version>1.3.0</version> </dependency> <dependency> ? ?<groupId>org.springframework.boot</groupId> ? ?<artifactId>spring-boot-starter-aop</artifactId> </dependency>
请修改application.yml或application.properties文件,添加以下配置:
#pagehelper分页插件配置 pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql