1 Star 7 Fork 3

一灰灰Blog / spring-boot-demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

Spring-Boot-Demo

#

Build Status Average time to resolve an issue Percentage of issues still open

SpringBoot + SpringCloud + SpringSecurity学习过程中的源码汇总,沉淀记录下学习历程

欢迎关注公众号 一灰灰blog 更多干货持续分享

QrCode

0. 项目说明

如果想在本机使用这个项目的demo,下面有一些注意事项

环境要求

java: jdk1.8
maven: 3.2+
spring boot: 2.2.1.RELEASE
ide: IDEA/Eclipse/NetBeans随意

## 不同项目的环境依赖,请以项目对应的博文要求为准
db: mongodb + mysql + redis + solr + elasticsearch
中间件: promotheus + grafana + kibana + rabbitmq

IDEA插件

# 必须
lombok

# 推荐
maven helper: 查看依赖树的好工具(排除依赖冲突非常棒)
Free MyBatis plugin: mybatis的mapper与xml跳转比较方便
Mybatis log Plugin:日志
CodeGlance: 类似sublimetext 右边的快速预览框
Rainbow Brackets: 不同层级的括号颜色不一样

1. 知识点图谱

所有博文集中发布在个人博客网站 : 一灰灰Blog-Spring

大致规划的内容包括以下章节,希望能用半年到一年(严重超期)的时间完成....

I. 基础篇

II. 高级篇

III. MVC篇

IV. SpringCloud篇

  • 注册中心
  • 配置中心
  • 网关路由
  • 负载均衡
  • 熔断器
  • 链路监控
  • 安全模块
  • oauth
  • admin

V. 源码篇

  • xxx

VI. 项目说明

项目说明
项目 说明 知识点
SpringBoot SpringBoot项目 -
000-properties 【配置】使用姿势 @PropertySource 指定配置文件,
@ConfigurationProperties 指定配置前缀,
@value 配置绑定
001-properties 【配置】环境选择 配置spring.profiles.active指定环境
002-properties 【配置】刷新示例 SpringCloud生态配置刷新
@RefreshScopeEnvironmentChangeEvent配置变更事件
002-properties-bind 【配置】刷新绑定的各种知识点 @ConfigurationProperties
002-dynamic-envronment 【配置】自定义配置源 MapPropertySource
002-properties-value 【配置】@Value扩展知识点 @Value
003-log 【日志】集成logback logback日志集成与配置
003-log4j2 【日志】集成log4j2 log4j2日志集成与配置
004-bean 【bean】使用姿势 bean三种定义姿势
bean三种注入方式
005-autoconfig 【bean】自动加载 @Configuration自动加载配置类
005-config-selector 【bean】选择注入 ImportSelector 选择在接口的多个实现中,具体实例化哪个
006-dynamicbean 【bean】动态注册bean BeanDefinitionRegistryPostProcessor 扩展实现bean动态注册
007-conditionbean 【bean】条件注入 @Coinditional 使用姿势
008-beanorder
008-beanorder-addition
008-beanorder-addition2
【bean】加载顺序 bean加载顺序的反面示例与正确写法
009-schedule 【定时器】定时任务/计划任务 @Scheduled 基本语法与自定义线程池
010-aop 【AOP】切面 aop基本使用姿势与注意事项
011-aop-logaspect 【AOP】切面 实战,日志切面
012-context-listener 【Listener】事件 ContextListener
013-spel 【SpEL】 SpEL语法与实例
014-spel-aop 【SpEL】 SpEL & aop整合时注意事项
100-h2database 【DB】h2database整合 -
100-mysql 【DB】mysql整合 -
101-jdbctemplate 【DB】jdbctemplate使用姿势 CURD详解 JdbcTemplate
101-jdbctemplate-transaction 【DB】事务 @Transactional声明式; 编程式事务
- 隔离级别
传递属性
102-jpa 【DB】 jpa使用姿势 JPA
102-jpa-errorcase 【DB】环境配置易错点 @EnableJpaRepositories, @EntityScan指定扫描包
102-jpa-errorcase2 【DB】Entity映射错误 Field映射POJO
103-mybatis-xml 【DB】mybatis xml配置整合方式 mybatis
104-mybatis-noxml 【DB】mybatis 注解整合方式 mybatis
105-mybatis-plus 【DB】mybatis-plus整合 mybatis-plus
106-mybatis-plus-generator 【DB】mybatis-plus代码自动生成 mybatis-plus
107-jooq-aop 【DB】jooq体验demo,jooq+aop导致项目启动巨慢的坑 jooq
108-jooq-curd 【DB】jooq CURD使用姿势 jooq
108-jooq-mysql 【DB】jooq代码自动生成 jooq-code-gen
109-multi-datasource 【DB】多数据源配置 JdbcTemplate, DataSource
109-multi-datasource-mybatis 【DB】mybatis多数据源配置 Mybatis DataSource
109-multi-datasource-mybatis-ano 【DB】mybatis多数据源配置 Mybatis DataSource
109-multi-datasource-mybatis-plus 【DB】mybatis-plus多数据源配置 Mybatis-Plus DataSource
110-mongo-basic 【DB】mongodb整合 mongodb
111-mongo-template 【DB】mongodb CURD使用姿势 MongoTemplate
120-redis-config 【redis】环境配置与基本使用 redis
121-redis-jedis-config 【redis】jedis配置 jedis
122-redis-template 【redis】RedisTemplate 使用姿势详解 RedisTemplate
123-redis-lettuce-config 【redis】lettuce配置 lettuce
124-redis-cluster 【redis】集群使用姿势 redis集群实例
125-cache-ano 【Cache】缓存注解 Spring缓存注解使用姿势
130-influxdb 【DB】influxdb整合及CURD 时序数据库 influxdb
131-influxdb-java 【DB】influxdb封装 封装更服务SpringBoot规范的InfluxTemplate,待实现
140-search-solr 【Solr】solr环境+CURD使用姿势 SolrTemplate, SolrClient
141-search-solr-auth 【Solr】solr开启授权无法更新索引的四种解决方案 解决solr更新索引报错问题
142-search-es 【ES】es实例使用demo ES,权限验证,CURD,高级特性等 RestHighLevelClient
150-i18n 【i18n】国际化 国际化支持
200-webflux 【web】WebFlux实例 React
201-web 【web】basic http实例 springmvc
202-web-params 【web】请求参数解析的各种姿势 get参数解析
post参数解析
自定义参数解析HandlerMethodArgumentResolver
202-web-params-validate 【web】请求参数校验 参数校验validation-api
203-websocket 【web】websocket实例 WebSocketHandler, WebSocketConfigurer
204-web-static-resources 【web】静态资源访问实例 WebMvcConfigure, spring.resources.static-locations
204-web-static-resources-ui 【web】webjar静态资源 第三方jar包提供纯静态资源
204-web-freemaker 【web】freemaker引擎整合 freemaker
205-web-thymeleaf 【web】thymeleaf引擎整合 thymeleaf
206-web-beetl 【web】beetl引擎整合 beetl
207-web-response 【web】http响应的各种姿势 基本数据返回
重定向
错误页面配置
定制http code
208-web-mapping 【web】自定义url映射规则 RequestCondition
209-web-error 【web】全局异常处理 ControllerAdvice, ExceptionHandler
210-web-filter 【web】filter使用姿势 HttpFilter过滤器
210-web-filter-order 【web】filter优先级使用姿势 HttpFilter, @Order
211-web-servlet 【web】servlet使用姿势 Servlet
212-web-listener 【web】listener知识点 Listener
219-web-asyn 【web】异步请求 AsyncContext方式
Callable
WebAsyncTask
DeferredResult
220-web-sse 【web】sse 服务器发送事件 SseEmitter
221-web-resttemplate 【web】RestTemplate使用姿势 RestTemplate
222-web-client 【web】WebClient使用姿势 WebClient
223-webflux-params 【web】webflux参数解析实例demo webflux
230-web-resin 【web】resion容器整合 resin
300-rabbitmq 【web】rabbitmq整合 rabbitmq
301-rabbitmq-publish 【web】rabbitmq发送消息 RabbitTemplate
消息确认模式
事务模式
302-rabbitmq-consumer 【web】rabbitmq消费消息姿势 @RabbitListener
400-docker-demo 【docker】docker整合 Dockerfile
410-zookeeper-basic 【中间件】zk使用姿势 ZooKeeper
411-zookeeper-distributelock 【中间件】zk 分布式锁 DistributeLock
SpringCase 实战/应用演练项目 -
000-spi-factorybean 借助FactoryBean实现SPI效果 FactoryBean
002-dynamic-config
002-dynamic-config-demo
自定义配置加载与刷新示例工程 借助InstantiationAwareBeanPostProcessorAdapter + Spring事件机制实现@Value @RefreshScope
006-importbean 将非spring项目导入Spring生态
自定义注入实例
ImportBeanDefinitionRegistrar
008-bean-order
008-bean-order-client
指定bean加载优先级,让中间件的核心bean优于业务bean被加载 InstantiationAwareBeanPostProcessorAdapter, @Import
009-distribute-scheduler-task 分布式定时任务mock实例 AOP实现定时任务选择; 重写ScheduledAnnotationBeanPostProcessor扩展定时任务生成
010-auto-inject 自定义注入实现 BeanPostProcessor 与 代理类创建
120-redis-ranklist redis实现排行榜 zset
124-redis-sitecount redis实现站点统计 redisTemplate
125-redis-distribuet-lock redis分布式锁 redisTemplate
126-redis-delay-list redis实现的演示队列 redisTemplate
201-web-api-version web版本控制 RequestMappingHandlerMapping
202-web-qrcode-login web扫码登录实战 SseEmitter
203-web-rest-adapter url匹配规则自定义,子类继承父类的参数注解 RequestMappingHandlerMapping, HandlerMethodArgumentResolver
204-web-request-proxy 基于接口的REST访问支持 ClassPathBeanDefinitionScanner, ImportBeanDefinitionRegistrar
205-web-rest-enhanced 单机应用最小成本扩展REST服务示例 RequestMappingHandlerMapping
421-prometheus-metric AOP实现自定义的Prometheus埋点上报 Prometheus
430-mail-alarm 基于日志的邮件报警 javaMailSender
SpringSecurity 安全
000-basic-demo 整合实例
001-authentication-mem-config 内存认证
001-authentication-mem-userdetail 内存认证
002-authentication-db db认证
010-accesscontrol-rbac rbac 权限管理
011-accesscontrol-acl acl权限管理
spring-cloud 微服务
config-server 配置中心 spring cloud config
eurka-server 注册中心 spring cloud eurka
eurka-service-consumer 服务提供者 spring cloud eurka
eurka-service-provider 服务消费者 ribbon feign
gateway 网关 spring cloud gateway 网关

2. 系列博文

0. 实战系列

  1. 【SpringBoot实战】Bean之注销与动态注册实现服务mock
  2. 【SpringBoot实战】FactoryBean及代理实现SPI机制的实例
  3. 【SpringBoot实战】借助Redis实现排行榜功能
  4. 【SpringBoot实战】借助Redis搭建一个简单站点统计服务
  5. 【SpringBoot实战】AOP实现日志功能
  6. 【SpringBoot实战】徒手撸一个扫码登录示例工程
  7. 【SpringBoot实战】mock一个简单的分布式定时任务
  8. 【SpringBoot实战】Redis实现分布式锁(应用篇)
  9. 【SpringBoot实战】借助redis来实现延时队列(应用篇)

1. 基础系列

基础系列博文包括 AOP, IoC(DI,Bean), 日志, 自动配置等

配置

IoC(DI/bean)

AOP相关

日志

定时任务

SpEL

事件

国际化

2. DB系列

我们将db区分为传统的关系型数据库如mysql,NoSql如redis、mongodb,时序数据库influxdb

h2database

MongoDB

redis

mysql

分别介绍多种不同的操作姿势

JdbcTemplate

jpa

mybatis

事务

采坑、填坑

jooq

3. 搜索系列

搜索主要会区分solr和es

solr

es

4. MQ系列

消息队列,如rabbitmq, rocketmq, activemq, kafaka

rabbitmq

5. WEB系列

web系列的东西就比较多了,基本上日常开发中,你需要的都会有;你没用过的也会有

采坑、填坑

应用实战

WebFlux系列

由于WebFlux和SpringMVC在一些基础上差别较大,单独开一个系列教程版块

webclient异步网络请求

6. SpringSecurity系列

记录SpringSecurity相关的所有技术文章,分类汇总如下,持续更新中

简单抽象的说一下SpringSecurity它的定义

  • 很🐂的认证和访问权限校验框架

那么具体能干嘛?

  • 用户登录认证:用户名+密码登录,确定用户身份
  • 用户访问鉴权(常见的ACL访问控制列表,RBAC角色访问控制):判定是否有权限访问某个资源
  • 安全保护(CSRF跨站点攻击,Session Fixation会话固定攻击…)

相关博文

7. SpringCloud系列

微服务系列

Eureka系列

踩坑、填坑

8. 运维

docker

9. 中间件

zookeeper

prometheus

邮件

3. 其他

拒绝单机,欢迎start或者加好友支持

声明

尽信书则不如无书,以上内容,一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

  • 微博地址: 小灰灰Blog
  • QQ: 一灰灰/3302797840
  • WeChat: 一灰/liuyueyi25

扫描关注

公众号&博客

QrCode

打赏码

pay

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

Spring Boot & Spring Cloud Study Demo 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/liuyueyi/spring-boot-demo.git
git@gitee.com:liuyueyi/spring-boot-demo.git
liuyueyi
spring-boot-demo
spring-boot-demo
master

搜索帮助

14c37bed 8189591 565d56ea 8189591