SpringBoot学习
文章平均质量分 87
springboot
Binary Oracle
一名热爱开源和技术的Coder , 开源框架spring committer , golang开源网络库netpoll committer; (脱产备战25考研中,停更一年)
展开
-
spring事务bug
spring事务bugSpring@Transactional注解在什么情况下事务不生效spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()Spring@Transactional注解在什么情况下事务不生效Spring@Transactional注解在什么情况下事务不生效spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTr原创 2022-01-20 22:42:54 · 404 阅读 · 0 评论 -
缓存框架Caffeine探究
缓存框架Caffeine探究Java高性能本地缓存框架Caffeine依赖缓存加载手动加载CleanUp方法自动加载手动异步加载自动异步加载过期策略基于大小基于时间基于引用Caffeine.weakKeys()Caffeine.weakValues()Caffeine.softValues()刷新机制缓存移除invalidate(Object key)方法invalidateAll(Iterable<?> keys)方法invalidateAll()方法移除监听器(RemovalListener原创 2022-01-04 19:16:36 · 3251 阅读 · 0 评论 -
Knife4j学习采坑记录
Knife4j学习采坑记录官方文档官方文档Knife4j原创 2022-01-04 11:37:49 · 226 阅读 · 0 评论 -
springboot单元测试采坑记录
springboot单元测试采坑记录springboot中高低版本单元测试依赖问题springboot中高低版本单元测试依赖问题springboot中单元测试依赖低版本的springboot中,SpringBootTest注解没有自带Extension注解,需要我们手动添加,才会具备spring环境...原创 2021-12-15 12:51:35 · 337 阅读 · 0 评论 -
@Validated注解和@Valid注解区别
@Validated注解和@Valid注解详解引入依赖@Validated注解和@Valid注解区别@Valid注解使用场景演示嵌套校验和controller层请求参数校验@Valid注解校验不通过会抛出MethodArgumentNotValidException异常@Valid注解的请求参数后面紧跟一个BindingResult对象,来封装校验结果全局处理异常MethodArgumentNotValidException@Validated使用场景演示controller请求参数校验对配置文件的装配进行原创 2021-12-06 16:03:38 · 5600 阅读 · 1 评论 -
重学SpringBoot系列之Spring cache详解
重学SpringBoot系列之Spring cache详解为什么使用缓存为什么使用Spring Cache如何使用Spring Cache加依赖开启缓存加缓存注解测试常用注解@Cacheable缓存中spel表达式可取值@CachePut@CacheEvict@Caching@CacheConfig自定义缓存注解完整应用案例结合源码剖析注解的运行流程入口:基于AOP的拦截器@Cacheable的sync自定义一个keyGenerator使用其它缓存框架使用缓存带来的问题双写不一致占用额外的内存为什么使用原创 2021-12-03 20:24:17 · 1589 阅读 · 0 评论 -
Quartz定时任务框架使用教程详解
Quartz定时任务框架学习什么是QuartzQuartz依赖引入使用 QuartzQuartz API,Jobs和TriggersJob 和 Trigger为什么既有 Job,又有 Trigger 呢?KeyJob与JobDetail介绍为什么设计成JobDetail + Job,不直接使用JobJobDataMapJob实例Job状态与并发Job的其它特性JobExecutionExceptionQuartz中Triggers介绍Trigger的公共属性优先级(priority)错过触发(misfire原创 2021-12-01 09:13:19 · 4373 阅读 · 4 评论 -
重学Spring系列之Swagger2.0和Swagger3.0
重学Spring系列之Swagger2.0和Swagger3.0使用Swagger2构建API文档为什么要发布API接口文档整合swagger2生成文档书写swagger注解生产环境下如何禁用swagger2使用Swagger2Markup实现导出API文档生成AsciiDoc通过Java代码来生成通过Maven插件来生成可以参考的文章Swagger3-即OpenAPI使整合springdoc-openapi将API分组分组展示使用 swagger3 注解代替 swagger2注解使用Swagger2构原创 2021-11-25 15:26:26 · 2254 阅读 · 2 评论 -
SpringBoot遗忘知识点整理
SpringBoot遗忘知识点整理@PropertySource@ValueOncePerRequestFilter@PropertySourceSpring高级之注解@PropertySource详解(超详细)@PropertySource配置的用法@Value【Spring注解驱动开发】如何使用@Value注解为bean的属性赋值,我们一起吊打面试官!OncePerRequestFilterOncePerRequestFilter 过滤器Spring MVC应用 – 过滤器Spr原创 2021-11-19 21:51:45 · 338 阅读 · 0 评论 -
项目知识盲区整理4
项目知识盲区整理4常用富文本编译器集合常用图表插件常用字体插件验证码element常用富文本编译器集合1.UEditorUEditor2.wangEditorwangEditor3.summernotesummernote常用图表插件EChartsECharts常用字体插件fontawesomefontawesome验证码kaptchakaptcha elementElement...原创 2021-11-12 21:54:10 · 2176 阅读 · 0 评论 -
Spring MVC和springboot静态资源处理详细总结
Spring MVC和springboot静态资源处理详细总结springmvc1)采用< mvc:default-servlet-handler / >2)采用< mvc:resources />示例:springboot1)webapp目录下的资源文件2)springboot默认的静态资源目录:3)自定义静态资源默认存储位置 和 通过addResourceHandlers增加静态资源映射路径4)修改配置文件来修改静态资源访问路径:1)spring.mvc.static-path-原创 2021-08-25 22:00:37 · 1979 阅读 · 23 评论 -
SpringBoot2---对rest风格的支持
对rest风格的支持rest使用与原理二级目录三级目录rest使用与原理@xxxMapping;Rest风格支持(使用HTTP请求方式动词来表示对资源的操作)以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户核心Filter;HiddenHt原创 2021-08-07 15:59:10 · 356 阅读 · 0 评论 -
SprinhgBoot2----自定义启动器
自定义启动器前言项目结构,模式。starter启动原理自定义Starter步骤首先创建一个空项目在空项目创建两个模块,一个启动器模块,一个自动配置模块项目配置1:配置启动器依赖(启动器配置文件里面添加对自动配置模块项目的依赖)2:配置自动配置模块项目依赖3.编写自动配置模块里的业务逻辑4. 创建XXXAutoConfiguration的扫描配置流程:5.打包并在其它项目上面引入启动器6.测试使用前言说明:springboot 官方给我们提供了很多启动器如:elasticsearch,aop,redis…原创 2021-08-07 13:14:37 · 144 阅读 · 2 评论 -
SpringBoot2---指标监控
指标监控1、SpringBoot Actuator1、简介2、1.x与2.x的不同3、如何使用2、Actuator Endpoint1、最常使用的端点最常用的Endpoint2、Health Endpoint3、Metrics Endpoint4、管理Endpoints1、开启与禁用Endpoints2、暴露Endpoints (监控端点)1、SpringBoot Actuator1、简介未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actu原创 2021-08-06 19:20:48 · 2038 阅读 · 3 评论 -
SpringBoot2---单元测试(Junit5)
单元测试JUnit5 的变化JUnit5常用注解常用注解使用演示断言机制(assertions)1、简单断言2、数组断言3、组合断言4、异常断言5、超时断言6、快速失败4、前置条件(assumptions)5、嵌套测试6、参数化测试Junit4到Junit5的迁移指南JUnit5 的变化Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库注意:SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖。如果需要兼容junit4需要自行引入(不能使原创 2021-08-04 22:43:21 · 1556 阅读 · 0 评论 -
SpringBoot2----MyBaits-Plus完成CRUD操作
MyBaits-Plus完成CRUD操作整合MyBatis-Plus----导入依赖自动配置使用plus的步骤1.创建Dao接口继承BaseMapper,里面有默认的增删改查方法2.封装数据库对应字段的实体类3.测试默认查询的表名就是对应实体类的名字Plus简化Service接口层和对应实现层的开发service接口service接口的实现ImpI层优点分页插件使用步骤1.查询数据,封装为list集合2.创建Page对象,规定显示第几页的数据,当前页显示几条记录3.调用service实现类的page方法,将原创 2021-08-04 20:25:29 · 914 阅读 · 6 评论 -
SpringBoot2----数据访问
数据访问数据源的自动配置---默认是HikariDataSource导入JDBC场景分析自动配置自动配置的类修改配置项使用Druid数据源druid官方github地址自定义方式创建数据源Driud内置监控页面功能开启Driud监控统计功能开启(sql监控)web-jdbc关联的监控数据开启防火墙功能用户名和密码登录数据监控页面,开启监控页面的时候配置初始化参数即可使用官方starter方式1、引入druid-starter2、分析自动配置配置文件配置实例官方文档整合MyBaits配置模式可以修改配置文件中原创 2021-08-04 15:47:18 · 227 阅读 · 1 评论 -
SpringBoot2----定制化原理
定制化原理定制化的常见方式原理分析套路定制化的常见方式修改配置文件;xxxxxCustomizer;编写自定义的配置类 xxxConfiguration;+ @Bean替换、增加容器中默认组件;视图解析器自定义异常视图解析器的演示:Web应用 编写一个配置类实现 WebMvcConfigurer 即可定制化web功能;+ @Bean给容器中再扩展一些组件@Configurationpublic class WebConfig implements WebMvcCo原创 2021-08-03 23:02:27 · 108 阅读 · 0 评论 -
SpringBoot2---Web原生组件注入(Servlet、Filter、Listener)和嵌入式Servlet容器
Web原生组件注入使用Servlet API@ServletComponentScan注解Servlet的使用Filter的使用Listener的使用使用RegistrationBean这里需要注意一个小细节: 组件是单实例,还是多实例的,这里建议还是使用默认的单实例,防止每一次请求访问都要创建一个Servlet对象解释为什么原生的Servlet会直接响应,没有经过spring的拦截器SpringBoot帮我们自动启动SpirngMVC的时候,自动的注册SpringMVC的前端控制器配置spring.mvc原创 2021-08-03 22:50:12 · 456 阅读 · 0 评论 -
SpringBoot----嵌入式Servelt容器
嵌入式Servelt容器SpringBoot默认使用tomcat作为嵌入式的Servlet容器定制和修改Servelt容器的相关配置1.修改和Server有关的配置,去找对应绑定的类(ServerProperties)通用的Servlet设置和tomcat相关设置编写一个嵌入式的容器定制器(EmbeddedServletContainerCustomizer),来修改Servlet容器的相关配置EmbeddedServletContainerCustomizer不存在,SpringBoot2.0 以上,使用原创 2021-08-03 21:29:51 · 603 阅读 · 0 评论 -
SpringBoot2-----异常处理
异常处理错误处理1、默认规则error/下的4xx,5xx页面会被自动解析2、定制错误处理逻辑自定义错误页error/404.html error/5xx.html;有精确的错误状态码页面就匹配精确,没有就找 4xx.html;如果都没有就触发白页@ControllerAdvice+@ExceptionHandler处理全局异常;@ResponseStatus+自定义异常====》@ResponseStatus:自定义异常Spring底层的异常,如 参数类型转换异常;DefaultHandlerExce原创 2021-08-03 20:48:22 · 683 阅读 · 0 评论 -
SpringBoot2----拦截器和文件上传功能
CRUD中遇到的知识点整理表单重复提交问题不经过登录直接来到某一页面的问题----拦截器我们这里的拦截器拦截的路径是/** :任意多层路径下的所有请求都会被拦截,那么静态资源就会被拦截如何解决静态资源被拦截器拦截的问题拦截器步骤总结拦截器原理thymeleaf可以通过抽取部分重复模板片段,减少重复工作量任何一个页面,如果想要被thymeleaf模板引擎解析,都必须在对应页面引入模板引擎的th名称空间文件上传功能表单部分的文件上传固定格式写法springboot自动配置的文件上传功能中对单个文件上传大小和一次原创 2021-08-03 16:58:18 · 781 阅读 · 0 评论 -
SpringBoot2---自定义类型转换器
我们可以给WebDataBinder(数据绑定器)里面放自己的Converter(转换器)自定义 Converter—对应配置类实现WebMvcConfigurer接口完成对springmvc默认配置的修改@Configuration//表明这是一个配置类public class WebConfig implements WebMvcConfigurer{ //自定义Stirng--->Pet的类型转换器 @Override原创 2021-08-02 17:58:20 · 786 阅读 · 0 评论 -
SpringBoot2----Web模块的基本注解
Web模块的基本注解1.1、注解:@ResponseBody@RestController@PathVariable@RequestHeader@RequestParam@CookieValue@RequestBody@RequestAttribute注意: 如果不引入模板引擎,那么就无法完成下面页面渲染,跳转到指定页面等功能@MatrixVariable---矩阵变量小应用: cookie禁用后,如何获取Jsessionid ?手动开启矩阵变量的功能我们可以使用@Configuration + WebMv原创 2021-08-02 17:32:06 · 445 阅读 · 0 评论 -
SpringBoot2---静态资源映射规则
静态资源映射规则1.静态资源访问1.0 查看官网文档对应说明1.1 静态资源目录1.2 静态资源访问前缀请注意: 加了静态资源访问前缀后,访问静态资源时,就必须加上前缀,这个多用于拦截器对静态资源的拦截1.3 改变默认的静态资源路径----自己规定静态资源都放到哪个路径下面请注意:指定新的静态资源文件夹的位置之后,springboot默认的就不生效了,也就是说我们要通过我们指定的文件夹的位置去访问静态资源,以前的不能访问2.1 欢迎页支持2.2 自定义 Favicon1.静态资源访问1.0 查看官网文档原创 2021-08-02 13:45:49 · 1049 阅读 · 0 评论 -
SpringBoot2----容器功能
容器功能2.1、组件添加1、@Configuration基本使用Full模式与Lite模式这里有无依赖多指是否在一个类中使用到另一个类,例如在People类里面,Cat类是People里的一个属性,这样People和cat类之间就产生了依赖关系Full模式与Lite模式注意点如下关于SpringBoot的Full模式与Lite模式上面案例的总结2、@Bean、@Component、@Controller、@Service、@Repository这些注解都可以用来注册组件到容器中,当然注册组件到容器中的方法不原创 2021-08-01 22:02:45 · 376 阅读 · 0 评论 -
SpringBoot---错误处理机制
SpringBoot---Web开发第三部分SpringBoot默认的错误处理机制浏览器访问,默认返回一个错误页面PostManHttp请求模拟工具,软件下载链接如下如果是其他客户端,默认响应一个JSON数据原理-----SpirngMVC错误处理的自动配置如何定制错误响应1.定制错误响应页面1.如何定制错误的json数据出现自适应效果:转发到error请求,让BasicErrorController来处理该请求传入我们自己的错误状态码 4xx 5xx,否则就不会进入定制错误页面的解析流程将我们定制数据携原创 2021-08-01 15:09:01 · 298 阅读 · 0 评论 -
SpringBoot----Web开发第二部分---CRUD案例实现
Web开发第二部分引入资源" /index.html " :只有在没人能处理该请求的情况下,才会去静态文件夹下面找是否有同名的资源访问主页的第一种方式: 通过controller层方法的转发到对应页面访问主页的第二种方式:扩展SpringMVC,添加视图解析功能访问主页的第三种方式: 这里还可以在里面使用匿名内部类的方式,返回一个WebMvcConfigurerAdapter@{...}是Thymeleaf专门用来处理 URL 链接地址的,会自动帮我们加上项目名的访问路径国际化步骤1.编写国际化配置文件,抽原创 2021-08-01 11:34:21 · 526 阅读 · 1 评论 -
SpringBoot---Web开发第一部分
Web开发Web开发简介SpringBoot对静态资源映射规则webjars官网链接映射规则一: 通过webjars以jar包的方式引入静态资源,如jquery,bootstrap等映射规则二:" /** " 访问当前项目的任何资源 (静态资源的文件夹)首页(欢迎页):静态资源文件夹下的所有index.html页面,被 " /** "映射所有的 **/favicon.ico 都是在静态资源文件下找----访问网页时,网页上面显示的图标修改静态资源文件夹的位置SpringBoot对静态资源的映射规则可以参考下原创 2021-07-30 21:01:15 · 1029 阅读 · 54 评论 -
SpringBoot----日志框架和配置
日志框架和配置日志框架分类和选择SLF4j使用SLF4j用户手册使用图示---需要导入的jar包统一日志记录,即使是别的框架,也和我一起使用slf4j进行输出如何让系统中所有日志统一使用slf4jSpringBoot日志关系日志使用1.springBoot默认已经帮我们配置了日志配置关于使用logger.trace()里面传入字符串爆红问题===》自动导包导入导入的包不匹配SpringBoot默认日志级别是info级别的,没有指定级别的就使用springboot默认规定的级别===》root级别===》in原创 2021-07-30 15:55:14 · 518 阅读 · 0 评论 -
SpringBoot---入门和配置
SpringBootSpringBoot的简介微服务环境约束maven设置---默认使用jdk-1.8版本来编译和运行项目SpringBoot的hello world入门案例1.创建maven工程2.导入springBoot的依赖3.编写主程序,启动springboot应用4.编写相关的controller和service5.运行主程序测试6.部署,将项目打包成可执行的jar包,安装插件即可Hello World探究POM文件父项目(父依赖)启动器主程序类(入口类)注意: springboot的包扫描底层原原创 2021-07-30 14:00:57 · 1779 阅读 · 1 评论