SpringBoot
2021-11-23 23:43:59 79 举报
AI智能生成
SpringBoot
作者其他创作
大纲/内容
SpringBoot企业级开发
安全控制SpringSecurity
SpringSecurity快速入门
什么是Spring Security
Spring Security的配置
DelegatingFilterProxy
配置
用户认证
内存中的用户
JDBC中的用户
通用的用户
请求授权
定制登录行为
SpringBoot的支持
自动配置了一个内存中的用户
忽略/css/** /js/** /images/** /**/favicon.ico等静态文件的拦截
自动配置的securityFilterChainRegistration的Bean
实例
批处理SpringBatch
SpringBatch快速入门
什么是Spring Batch
Spring Batch主要组成
JobRepository
JobLauncher
Job
Step
ItemReader
ItemProcessor
ItemWriter
Job监听
数据读取
数据处理及校验
数据处理
数据校验
数据输出
计划任务
参数后置绑定
SpringBoot的支持
实例
异步消息
企业级消息代理
Spring的支持
SpringBoot的支持
JMS实战
AMQP实战
系统集成SpringIntegration
SpringIntegration快速入门
Message
Channel
顶级接口
MessageChannel
PollableChannel
SubscribaleChannel
常用消息通道
PublishSubscribeChannel
QueueChannel
PriorityChannel
RendezvousChannel
DirectChannel
ExecutorChannel
通道拦截器
MessageEndPoint
Channel Adapter
Gateway
Service Activeator
Router
Filter
Splitter
Aggregator
Enricher
Transformer
Bridge
Spring Integration Java DSL
实例
SpringBoot开发部署与测试
开发的热部署
模板热部署
Thymeleaf
FreeMarker
Groovy
Velocity
SpringLoaded
JRebel
spring-boot-devtools
常规部署
jar形式
打包
运行
注册为Linux的服务
war形式
打包方式为war时
打包方式为jar时
云部署--基于Docker的部署
Dockerfile
FROM指令
MAINTAINER指令
RUN指令
CMD指令
EXPOSE指令
ENV指令
ADD指令
ENTRYPOINT指令
安装Docker
项目目录及文件
编译镜像
运行
SpringBoot的测试
新建SpringBoot项目
业务代码
测试用例
执行测试
应用监控
http
新建SpringBoot项目
测试端点
actuator
autoconfig
beans
dump
configprops
health
info
metrics
mappings
shutdown
trace
定制端点
修改端点id
开启端点
关闭端点
只开启所需端点
定制端点访问路径
定制端点访问端口
关闭http端点
自定义端点
状态服务
自定义端点
注册端点并定义演示控制器
自定义HealthIndicatior
JMX
SSH
新建SpringBoot项目
运行
常用命令
定制登录用户
扩展命令
分布式系统开发
微服务/原生云应用
SpringCloud快速入门
配置服务
服务发现
路由网关
负载均衡
断路由
实战
项目构建
服务发现Discovery(Eureka Server)
配置Config(ConfigServer)
服务模块Person服务
服务模块Some服务
界面模块UI(Ribbon,Feign)
断路器监控Monitor(DashBoard)
运行
基于Docker部署
Dockerfile编写
runboot.sh脚本的编写
Dockerfile编写
Docker的Mean插件
编译镜像
DockerCompose
Docker-compose.yml编写
运行
附录
基于JHipster的代码生成
常用应用属性配置列表
SpringBoot基础
SpringBoot概述
什么是SpringBoot
SpringBoot核心功能
独立运行的Spring项目
内嵌Servlet容器
提供Starter简化Maven配置
自动配置Spring
准生产的应用监控
无代码声称和xml配置
SpringBoot的优缺点
优点
快速构建项目
对主流开发框架的无配置集成
项目可独立运行,无需外部依赖Servlet容器
提供运行时的应用监控
极大地提高了开发,部署效率
与云计算的天然集成
缺点
书籍文档较少,且不够深入
SpringBoot版本
SpringBoot快速搭建方式
SpringToolSuite
基于SpringBoot官网创建项目
http://start.spring.io
下载压缩包
基于IDEA的Spring Initializr
使用spring官网(默认) 需要提前设置maven镜像 否则导入依赖很慢
基于阿里云创建项目,地址:https://start.aliyun.com
Maven手工构建
SpringBootCLI
parent
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),
以达到减少依赖冲突的目的
以达到减少依赖冲突的目的
starter
SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的
实际开发
使用任意坐标时,仅书写GAV中的G(GroupId)和A(ArtifactId),V由SpringBoot提供,除非SpringBoot未提供对应版本V
如发生坐标错误,再指定Version(要小心版本冲突)
如发生坐标错误,再指定Version(要小心版本冲突)
引导类
@SpringBootApplication含
@ComponentScan
开启自动扫描 默认扫描引导类所在包及其子包
@Configuration
声明配置类
@EnableAutoConfiguration
开启自动配置
@ConfigurationProperties
引入Properties文件
@Bean
引导类的run方法实际上就是获取Spring容器
内置tomcat
内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,
并将该对象交给Spring容器管理
springboot内置服务器还有其他两个
并将该对象交给Spring容器管理
springboot内置服务器还有其他两个
tomcat(默认)
负载了若干较重的组件
jetty
更轻量级,负载性能远不及tomcat
undertow
负载性能勉强跑赢tomcat
如何更改服务器
使用maven依赖管理变更起步依赖项
变更内嵌服务器思想是去除现有服务器,添加全新的服务器
变更内嵌服务器思想是去除现有服务器,添加全新的服务器
基础配置
application.properties
application.yml(主流)
yaml语法规则
字面值表示方式
数组表示方式
在配置文件中可以使用属性名引用方式引用属性
属性值中如果出现转义字符,需要使用双引号包裹
如\t制表位 \n换行
使用注解@Autowired封装全部数据到Environment对象
通过env对象getProperty方法获取数据
使用@ConfigurationProperties自定义对象封装指定数据
封装类需要定义为Spring管理的bean,否则无法进行属性注入
一般都采用@enableconfigurationproperties而不是@component把对象交由spring管理
这里为了方便
一般都采用@enableconfigurationproperties而不是@component把对象交由spring管理
这里为了方便
配置jdbc
yaml数据读取
使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
application.yaml
SpringBoot配置文件加载顺序
◆ application.properties > application.yml > application.yaml
◆ application.properties > application.yml > application.yaml
IDEA识别配置文件bug解决(绿叶变粉)
手动添加识别配置文件
属性注入
@Autowired
通过配置类构造方法注入
@Bean方法形参
@Bean
@ConfigurationProperties(prefix = "jdbc")
@ConfigurationProperties(prefix = "jdbc")
@Configuration
public class JdbcConfiguration {
@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
public class JdbcConfiguration {
@Bean
// 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
该类必须有setter方法
整合第三方技术
学习整合的思想
整合第三方技术通用方式
导入对应的starter
根据提供的配置格式,配置非默认值对应的配置项
导入对应的starter
根据提供的配置格式,配置非默认值对应的配置项
整合Junit
1.导入测试对应的starter(默认)
2.测试类使用@SpringBootTest修饰
3.使用自动装配的形式添加要测试的对象
2.测试类使用@SpringBootTest修饰
3.使用自动装配的形式添加要测试的对象
注意:测试类如果不存存在于引导类对应所在包或子包中需指定引导类
@SpringBootTest(classes= 引导类.class)
@SpringBootTest(classes= 引导类.class)
整合原理和Spring整合Junit一样,可以去看Spring
整合MyBatis
yml设置数据源参数
数据库SQL映射需要添加@Mapper被容器识别到
使用8版本mysql时驱动类过时更换为com.mysql.cj.jdbc.Driver
注意:SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区
整合MyBatis-Plus
由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version
如果不使用阿里云创建项目需要手动添加依赖
如果不使用阿里云创建项目需要手动添加依赖
可以将原来的starte删掉
定义数据层接口与映射配置,继承BaseMapper
id生成策略使用数据库自增策略
若需要看到sql语句执行流程
需要开启MyBatisPlus的日志
需要开启MyBatisPlus的日志
整合Druid
导入Druid对应的starter
两种配置方式
变更Druid的配置方式(推荐)
指定数据源类型
练习项目
lombok
一个Java类库,提供了一组注解,简化POJO实体类开发,只需导入GA
注意还需要IDEA下载lombok插件,否则无法使用
注意还需要IDEA下载lombok插件,否则无法使用
@Data
含@Getter@Setter功能
为当前实体类在编译期设置对应的get/set方法,toString方法,hashCode方法,equals方法等
无参@NoArgsConstructor,
全参@AllArgsConstructor,
@RequiredArgsConstructor
全参@AllArgsConstructor,
@RequiredArgsConstructor
@RequiredArgsConstructor : 生成一个包含 "特定参数" 的构造器,特定参数指的是那些有加上 final 修饰词的变量们
Spring常用配置
Bean的Scope
Singleton
Prototype
Request
Session
GlobalSession
SpringEL和资源调用
注入普通字符
注入操作系统属性
注入表达式云算结果
注入其他Bean的属性
注入文件内容
注入网址内容
注入属性文件
Bean的初始化和销毁
Java配置方式
注解方式
Profile
@Profile
通过设定jvm的spring.profiles.active参数
web项目设置在Servlet的context parameter中
事件Application Event
自定义事件,集成ApplicationEvent
定义事件监听器,实现ApplicationListener
使用容器发布事件
Spring高级话题
Spring Aware
BeanNameAware
BeanFactoryAware
ApplicationContextAware
MessageSourceAware
ApplicationEventPublisherAware
ResourceLoaderAware
多线程
计划任务
cron
fixDelay
fixRate
条件注解@Conditional
组合注解与元注解
@Enable*注解的工作原理
直接导入配置类
依据条件选择配置类
动态注册Bean
测试
Spring TestContext Framework集成测试
SpringBoot核心
基本配置
入口类和@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan
关闭特定的自动配置
定制Banner
修改Banner
关闭Banner
main里修改
fluentAPI
SpringBoot的配置文件
application.properties
application.yml
src/main/resources
starter pom
官方starter pom
spring-boot-starter
spring-boot-starter-actuator
spring-boot-starter-remote-shell
spring-boot-starter-amqp
spring-boot-starter-aop
spring-boot-starter-batch
spring-boot-starter-cache
spring-boot-starter-cloud-connectors
spring-boot-starter-data-elasticsearch
spring-boot-starter-data-gemfire
spring-boot-starter-data-jpa
spring-boot-starter-data-mongodb
spring-boot-starter-data-rest
spring-boot-starter-data-solr
spring-boot-starter-freemarker
spring-boot-starter-groovy-templates
spring-boot-starter-hateoas
spring-boot-starter-hornetq
spring-boot-starter-integration
spring-boot-starter-jdbc
spring-boot-starter-jerscy
spring-boot-starter-jta-atomikos
spring-boot-starter-jta-bitronix
spring-boot-starter-mail
spring-boot-starter-mobile
spring-boot-starter-mustache
spring-boot-starter-redis
spring-boot-starter-security
spring-boot-starter-social-facebook
spring-boot-starter-social-linkedin
spring-boot-starter-social-twitter
spring-boot-starter-test
spring-boot-starter-thymeleaf
spring-boot-starter-velocity
spring-boot-starter-web
spring-boot-starter-Tomcat
spring-boot-starter-Jetty
spring-boot-starter-undertow
spring-boot-starter-logging
spring-boot-starter-log4j
spring-boot-starter-websocket
spring-boot-starter-ws
第三方starter pom
Handlebars
Vaadin
Apache Camel
WRO4J
Spring Batch
HDIV
Jade Templates(jade4J)
Actitivi
使用XML配置
@ImportResource
外部配置
命令行参数配置
常规属性配置
类型安全的配置(基于properties)
日志配置
Profile配置
SpringBoot运行原理
运作原理
核心注解
@ConditionalOnBean
@ConditionalOnClass
@ConditionalOnExpression
@ConditionalOnJava
@ConditionalOnJndi
ConditionalOnMissingBean
ConditionalOnMissingClass
ConditionalOnNotWebApplication
ConditionalOnProperty
ConditionalOnResource
ConditionalOnSingleCandidate
ConditionalOnWebApplication
实例分析
配置参数
配置Bean
实战
Springboot的Web开发
SpringBoot的Web开发支持
ServerPropertiesAutoConfiguration和ServerProperties
HttpEncodingAutoConfiguration和HttpEncodingProperties
MultipartAutoConfiguration和MultipartProperties
JacksonHttpMessageConvertersConfiguration
WebMvcAutoConfiguration和WebMvcProperties
Thymeleaf模板引擎
Thymeleaf基础知识
引入Thymeleaf
访问model中的数据
model中的数据迭代
数据判断
在javaScript中访问model
其他知识
与SpringMVC集成
SpringBoot的Thymeleaf支持
实战
新建Spring Boot项目
示例JavaBean
脚本样式静态文件
演示页面
数据准备
运行
Web相关配置
SpringBoot提供的自动配置
自动配置的ViewResolver
ContentNegotiatingViewResolver
BeanNameViewResolver
InternalResourceViewResolver
自动配置的静态资源
类路径文件
webjar
自动配置的Formatter和Conventer
自动配置的HttpMessageConverters
静态首页的支持
接管SpringBoot的Web配置
注册Servlet,Filter,Listener
Tomcat配置
配置Tomcat
代码配置Tomcat
通用配置
新建类的配置
当前配置文件内配置
特定配置
替换Tomcat
替换为Jetty
替换为Undertow
SSL配置
生成证书
Spring Boot配置SSL
http转向https
Favicon配置
默认的Favicon
关闭Favicon
设置自己的Favicon
WebSocket
什么是WebSocket
SpringBoot提供的自动配置
实战
准备
广播式
配置WebSocket
浏览器向服务端发送的消息用此类接受
服务端向浏览器发送的此类的消息
控制器
添加脚本
演示页面
配置viewController
点对点式
添加Spring Security的starter pom
Spring Security的简单配置
配置WebSocket
控制器
登录页面
聊天页面
增加页面的viewController
基于Bootstrap和AnglarJS的现代Web应用
Bootstrap
什么是Bootstrap
下载并引入Bootstrap
CSS支持
页面组件支持
Javascript支持
AngularJS
什么是AngularJS
下载并引入AngularJS
模块,控制器和数据绑定
Scope和Event
Scope
Event
冒泡事件
广播事件
多视图和路由
依赖注入
Service和Factory
自定义指令
实战
SpringBoot的数据访问
引入Docker
Docker的安装
Linux下安装
Windows下安装
Docker常用命令及参数
Docker镜像命令
Docker镜像检索
镜像下载
镜像列表
删除镜像
Docker容器命令
容器基本操作
容器列表
查看运行和停止状态
停止和启动容器
停止容器
启动容器
端口映射
删除容器
容器日志
登录容器
下载所需的Docker镜像
异常处理
SpringDataJPA
SpringDataJPA
什么是Spring Data JPA
定义数据访问层
配置使用Spring Data JPA
定义查询方法
根据属性名查询
常规查询
限制结果数量
使用JPA的NamedQuery
使用@Query查询
使用参数索引
使用命名参数
更新查询
Specification
排序与分页
定义
使用排序
使用分页
自定义Repository的实现
定义自定义Repository接口
定义接口实现
自定义ReposityFactoryBean
开启自定义支持使用@EnableJpaRepositories的repositoryFactoryBeanClass来指定FactoryBean即可
SpringBoot的支持
JDBC的自动配置
对JPA的自动配置
对Spring Data JPA的自动配置
Spring Boot下的Spring Data JPA
实例
安装Oracle XE
非Docker 安装
Docker 安装
端口映射
管理
新建Spring Boot 项目
配置基本属性
定义映射实体类
定义数据访问接口
运行
SpringDataREST
Spring Data REST
什么是Spring Data REST
Spring MVC中配置使用Spring Data REST
继承方式
导入方式
SpringBoot的支持
实例
新建Spring Boot项目
实体类
实体类的Repository
Postman
REST服务测试
jQuery
AngularJS
列表
获取单一对象
查询
分页
排序
保存
更新
删除
定制
定制根路径
定制节点路径
声明式事务
Spring的事务机制
JDBC
DataSourceTransactionManager
JPA
JpaTransactionManger
Hibernate
HibernateTransactionManger
JDO
JdoTransactionManger
分布式事务
JtaTransactionManager
声明式事务
注解事务行为
类级别使用@Transactional
SpringDataJPA的事务支持
SpringBoot的事务支持
自动配置的事务管理器
自动开启注解事务的支持
实例
数据缓存Cache
Spring缓存支持
Spring支持的CacheManager
SimpleCacheManager
ConcurrentMapCacheManager
NoOpCacheManager
EhCacheCacheManager
GuavaCacheManager
HazelcastCacheManager
JCacheCacheManager
RedisCacheManager
声明式缓存注解
@Cacheable
@CachePut
@CacheEvict
@Caching
开启声明式缓存支持
SpringBoot的事务支持
实例
切换缓存技术
EhCache
Guava
Redis
非关系型数据库NoSQL
MongoDB
Spring的支持
Object/Document映射注解支持
@Document
@Id
DbRef
@Field
@Version
MongoTemplate
Repository的支持
SpringBoot的支持
安装MongoDB
非Docker
Docker安装
Redis
Spring的支持
配置
使用
opsForValue()
opsForList()
opsForSet()
opsForZSet()
opsForHash()
定义Serializer
Spring Boot的支持
安装Redis
非Docker安装
Docker安装
0 条评论
下一页