Spring全家桶
文章平均质量分 87
Spring、SpringMVC、SpringBoot实践和理论总结
ZWZhangYu
这个作者很懒,什么都没留下…
展开
-
SpringBoot整合Redis实践消息发布订阅特性
发布订阅是消息的一种常用模式。例如,在企业分配任务之后,可以通过邮件、短信或者微信通知到相关的责任人,这就是一种典型的发布订阅模式。首先是 Redis 提供一个渠道,让消息能够发送到这个渠道上 ,而多个系统可以监听这个渠道,如短信、微信和邮件系统都可以监听这个渠道,当一条消息发送到渠道,渠道就会通知它的监听者,这样短信、微信和邮件系统就能够得到这个渠道给它们的消息了,这些监听者会根据自己的需要去处理这个消息,于是我们就可以得到各种各样的通知了。原创 2022-10-27 20:27:53 · 1097 阅读 · 1 评论 -
SpringBoot整合Redis流水线实践 大数量批量执行优化
在默认的情况下,Redis 客户端是一条条命令发送给 Redis 服务器的,这样显然性能不高。在关系数据库中我们可以使用批量,也就是只有需要执行 SQL 时,才一次性地发送所有的 SQL 去执行,这样性能就提高了许多。对于 Redis 也是可以的,这便是流水线(pipline)技术,在很多情况下并不是 Redis 性能不佳,而是网络传输的速度造成瓶颈,使用流水线后就可以大幅度地在需要执行很多命令时提升 Redis 的性能。原创 2022-10-21 22:41:24 · 667 阅读 · 0 评论 -
SpringBoot整合Redis事务特性实践整理
首先 Redis 是支持一定事务能力的 NoSQL,在 Redis 中使用事务,通常的命令组合是 watch… multi…exec,也就是要在一个 Redis 连接中执行多个命令,这时我们可以考虑使用 SessionCallback 接口来达到这个目的。原创 2022-10-21 21:29:45 · 593 阅读 · 0 评论 -
SpringBoot升级至2.6X版本问题整理
经过检查未在该类发现setMinEvictableIdleTime,查询资料后说明该依赖版本较低setMinEvictableIdleTime方法在高版本,将2.7.0版本提升至2.11.1版本后问题解决,找到了对应的方法。JedisShardInfo类在Jedis4版本之后被移除,该问题是我将Jedis版本3.3升级到4.X版本导致的,目前的解决方式是适当降低Jedis版本。点击后发现无法进入该方法,说明该方法不存在,再点击其他的方法,定位到下面的类,2在对应的注入Bean上添加@Lazy注解。.....原创 2022-07-25 20:22:15 · 2511 阅读 · 1 评论 -
SpringBoot Actuator知识梳理
SpringBoot的Actuator。它提供了很多生产级的特性,比如监控和度量SpringBoot应用程序。Actuator的这些特性可以通过众多REST端点、远程shell和JMX获得。Actuator端点整理。/autoconfig和/conditions 获取自动配置条件。/beans 获得Bean装配报告。/env端点查看配置属性。/mapping请求URL映射。/metrics运行时指标监控。/httptrace 追踪Web请求。/dump 导出线程快照。/shutdown 优雅的关闭应用...原创 2022-07-21 23:23:07 · 1620 阅读 · 0 评论 -
SpringBoot进阶 属性源配置 配置文件存放的四个位置分析
属性源配置;应用配置四个配置路径分析;(1)外置,在相对于应用程序运行目录的/config子目录里。(2)外置,在应用程序运行的目录里。(3)内置,在Classpath:config包内。(4)内置,在Classpath根目录。这个也就是我们平常使用的路径地址classpath:application.properties......原创 2022-07-14 22:46:09 · 1135 阅读 · 0 评论 -
@Import注解实践总结
文章目录引入其他的@Configuration直接初始化其他类的Bean加载ImportSelector实现类指定实现ImportBeanDefinitionRegistrar的类,用于个性化加载引入其他的@Configuration通过提供@Import注解可以将其他的JavaConfig配置引入到当前配置类中如上图所示,有俩个配置类,ConfigA和ConfigB,其中ConfigA通过@Import注解导入了@ConfigB,当使用了@Import时,会优先加载@Import中的配置,然后再去原创 2021-03-27 18:21:08 · 1845 阅读 · 0 评论 -
SpringBoot整合UEditor富文本编辑器以及解决CSRF问题
(一)基本配置使用下载插件https://github.com/fex-team/ueditor/releases后端依赖 <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> <原创 2021-03-08 16:35:27 · 2068 阅读 · 0 评论 -
IOC初始化执行自定义方法
文章目录(1)实现CommandLineRunner接口(2)实现ApplicationRunner接口(3)初始化方法加上@PostConstruct注解(4)静态代码块(5)通过 @Bean创建自己定义Bean和启动时运行相关程序(1)实现CommandLineRunner接口我们在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和Appl原创 2020-12-12 19:14:50 · 1769 阅读 · 0 评论 -
使用EnvironmentPostProcessor自定义启动配置
文章目录介绍基本使用测试Order注解覆盖application.properties介绍SpringBoot支持动态的读取文件,留下的扩展接口org.springframework.boot.env.EnvironmentPostProcessor。这个接口是spring包下的,使用这个进行配置文件的集中管理,而不需要每个项目都去配置配置文件。这种方法也是springboot框架留下的一个扩展(可以自己去扩展)基本使用任意路径下创建配置文件定义MyEnvironmentPostProcess原创 2020-12-12 19:05:11 · 3646 阅读 · 0 评论 -
SpringMVC——HTTP请求项目实践整理总结
文章目录(一)MIME介绍(1)介绍(2)独立类型(二)四种常见的 POST 提交数据方式(三)SpringMVC接收POST请求的方式(1)默认Content-Type(2)application/json(四)getParameter() getInputStream()和getReader() 区别参考(一)MIME介绍(1)介绍语法结构type/subtype 类型/独立类型媒体类型(通常称为 Multipurpose Internet Mail Extensions 或原创 2020-12-06 14:46:38 · 2099 阅读 · 0 评论 -
拦截器操作数据流异常问题分析
文章目录【背景】【错误代码案例】【分析】【解决方案】【背景】当时的需要是在针对特定的请求做签名认证,而这个我选择了使用拦截器来处理,刚开始我是将签名的信息都放在了Body里面,因此拦截器我需要通过HttpServletRequest来获取,而Body数据是存储在流中的,当时就通过request.getReader()读取流信息,除此之外,我在controller用到了@RequestBody来接收JSON体,结果程序运行就发生了下面的问题:错误一:getInputStream() has alread原创 2020-12-06 11:52:25 · 2445 阅读 · 1 评论 -
SpringBoot整合knife4j基本使用
一、SpringBoot依赖和实例代码准备本实例基于SpringBoot搭建,所需要的配置和依赖很少,下面添加主要的依赖<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>1.9.6</version> </d原创 2020-06-15 19:35:53 · 25050 阅读 · 3 评论 -
SpringBoot与ElasticSearch检索笔记整理
文章目录介绍(一)检索(二)主要概念融合安装检索方式学习(一)索引员工文档(二)检索文档(三)轻量搜索(四)使用查询表达式搜索(五)更复杂的查询(六)全文搜索(七)高亮搜索(八)检索总结SpringBoot整合ES(一)简单介绍和自动配置分析(二)Jest客户端整合使用(三)SpringData ES整合使用(1)官方文档参考(2)自动配置类介绍(3)ElasticsearchRepository方式操作介绍(一)检索我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引原创 2020-06-14 00:01:28 · 1860 阅读 · 0 评论 -
整合Druid数据和数据源监控
(一)切换数据源引入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version></d...原创 2020-03-14 22:38:15 · 1615 阅读 · 0 评论 -
整合JDBC与数据源自动配置原理
(一)整合连接SpringBoot依赖启动选择:1:web-SpringWeb2:SQL: JDBC、MySQL参考依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-start...原创 2020-03-14 22:35:28 · 1273 阅读 · 0 评论 -
六:使用外置的Servlet容器
(一)嵌入式的Servlet容器(Jar)优点:简单,便携缺点:默认不支持JSP、优化定制比较复杂(使用定制器ServerProperties、自定义EmdeddedServletContainerCustomizer 或者 自己编写嵌入式Servlet容器的创建工厂EmbeddedServletContainerFactory)(二)外置Servlet容器好处:可以使用JSP(嵌入式的也...原创 2020-03-13 14:58:05 · 1259 阅读 · 0 评论 -
五、嵌入式Servlet容器启动原理
什么时候创建嵌入式Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat?获取嵌入式的Servlet容器工厂1:SpringBoot应用启动run方法2:refreshContext(context);SpringBoot刷新IOC容器,初始化IOC容器此时需要进行一个判断:如果是web应用则创建AnnotationConfigEmbeddedWebApplic...原创 2020-03-13 14:54:00 · 1170 阅读 · 0 评论 -
四、嵌入式Servlet容器自动配置原理
注意:本次自动配置原理基于SpringBoot 1.X版本,其中部分类在2.X版本有所变化,但是具体的流程和原理都是相似的,重要的是观察原理(一)Servlet容器启动过程org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration@Configuration @Conditiona...原创 2020-03-13 14:53:14 · 1210 阅读 · 0 评论 -
三、切换其他嵌入式Servlet容器
(一)其他Servlet容器介绍和优势Jetty的架构比Tomcat的更为简单。Jetty可以同时处理大量连接而且可以长时间保持连接,适合于web聊天应用等等。Jetty的架构简单,因此作为服务器,Jetty可以按需加载组件,减少不需要的组件,减少了服务器内存开销,从而提高服务器性能。Jetty默认采用NIO。在处理I/O请求上更占优势,在处理静态资源时,性能较高。Tomcat适合处理少数非...原创 2020-03-13 14:49:58 · 1129 阅读 · 0 评论 -
二、注册Servlet三大组件
由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件,也就不能够通过传统的xml配置来映射,如果需要注册自定义组件,可以通过如下方式(一)注册自定义Servlet组件1:创建继承HttpServlet类子类,重写doGet或者doPost,这里只是测试,如果是开发中需要put或者delete根据实际情况重写即...原创 2020-03-13 14:45:17 · 1144 阅读 · 0 评论 -
一、配置嵌入式Servlet容器
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器(一)配置文件修改Servlet属性如何定制和修改Servlet容器的相关配置org.springframework.boot.autoconfigure.web.ServerProperties相关的配置都可以通过上面这个类进行设置,比如开发中常使用的server.portpublic class ServerPro...原创 2020-03-13 14:41:47 · 1259 阅读 · 0 评论