
Spring
文章平均质量分 66
Oxye
我们都有选择权
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SpringBoot+Mybatis 动态多数据源
基于SpringBoot、Mybatis、Druid实现一个服务连接多个数据库的动态数据源代码,本文中数据源是固定两个,在配置文件和代码中写死成两个了,如果需要更多可以修改配置和代码,更灵活的方式是把数据源写成数组,这样代码就不用改多少。可以看出代码中的数据源配置来源是配置文件,那其实通过接口等方式动态控制数据源和运行中的代码也是可以的,客官可以自己实现。原创 2023-05-11 10:46:01 · 444 阅读 · 1 评论 -
SpringBoot:使用application/octet-stream 流式上传大文件,解决Mutipartfile multipart/form-data上传产生临时文件问题
multipart的流不是HTTPRequest的流,而是服务器的临时文件流multipart/form-data是表单上传,接口可以从Mutipartfile对象获取输入流getInputStream,表面上看没产生临时文件org.springframework.web.multipart.support.StandardMultipartHttpServletRequest的getInputStream这里面的流是从DiskFileItem(一眼磁盘)拿的,还告诉了你临时目录位置location。原创 2023-04-28 10:45:37 · 9137 阅读 · 6 评论 -
JAVA实现HTTP接口代理,支持视频等大文件代理下载
避免将外部系统的视频等资源文件的地址暴露给用户,一种思路是使用http代理。没有使用netty实现http代理,可以使用更简单的一段代码进行代理,代理接口收到的请求可以进行鉴权等操作。要求是支持视频的下载,代理服务不对文件进行临时下载,直接把文件流交给浏览器。暂时实现的只有get请求代理,其他类型请求自行修改吧。原创 2023-03-30 15:09:33 · 1307 阅读 · 0 评论 -
SpringBoot:集成H2数据库并持久化,url中mem、file有什么区别?
持久化配置SpringBoot版本是2.3.12.RELEASE,下面有些配置看SpringBoot版本的,比如spring.datasource.schema是这个版本以下的,spring.sql.init.data是更高版本的./dbfile 是把持久文件生成到程序启动路径下,你也可以自定义其他路径H2 url的含义先看以下两个常量,代表url开头与后半段,后半段的类型有mem内存模式、file本地文件模式、tcp|ssl远程模式,含义如下(参考http://www.h2database.com/原创 2022-11-30 14:02:26 · 5907 阅读 · 0 评论 -
SpringBoot Mybatis Oracle相关报错解决与原理源码解析:java.sql.SQLException 无效的列类型 1111
TypeException: Error setting null for parameter #1 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property.java.sql.SQLException: 无效的列类型: 1111原创 2022-10-25 18:47:17 · 5235 阅读 · 2 评论 -
SpringBoot+Liquibase+jar包外置changelog配置文件
此篇重点是SpringBoot自动装配Liquibase时,如何实现把changelog文件外置到jar包外。报错Specifying files by absolute path was removed in Liquibase 4.0. Please use a relative path or add '/' to the classpath parameter.原创 2022-10-09 11:18:12 · 2083 阅读 · 0 评论 -
Linux:kkFileView v4.0.0 安装、启动教程
预览组件-kkFileView 官网:https://kkfileview.keking.cn/zh-cn/docs/production.html官网安装教程较为简单,无4.0.0版的教程https://gitee.com/kekingcn/file-online-preview/releases 上说,v4.0.0对应LibreOffice7.12.安装 kkFileViewkkFileView-4.0.0 下目录结构把office.home改成自己安装的libreoffice7.1如果你本来原创 2022-07-01 11:12:08 · 12135 阅读 · 9 评论 -
LibreOffice 下载、Linux安装、启动、Java集成pdf转换
官网中文主页:https://zh-cn.libreoffice.org/点击下载,可选Linux、macOS、Windows三大类及其不同处理器对应的定制包本次在Linux安装使用 LibreOffice_7.3.3_Linux_x86-64_rpm.tar.gz将安装包放到Linux上安装进入RPMS文件夹中,安装过程中遇到选择,输入 y 回车安装成功后会在 下生产一个 的文件夹启动时会把pid打到这行命令下面Linux本地测试文档转换命令:查看进程查看端口占用Java集成工具包原创 2022-06-09 17:45:07 · 4731 阅读 · 0 评论 -
SpringBoot:使用Apache SSHD搭建基于JAVA的SFTP服务器
依赖服务器端<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springfram原创 2022-05-23 11:32:22 · 5410 阅读 · 3 评论 -
SpringBoot:一份可用的logback.xml配置
简介一份可用的logback.xml配置,可以按日期、文件大小切分文件生成文件列表效果如下project-debug-20220519.0.logproject-error-20220519.0.logproject-info-20220519.0.logproject-info-20220519.1.logproject-info-20220519.2.logproject-warn-20220519.0.logproject-debug-20220518.0.logproject-e原创 2022-05-19 17:19:42 · 560 阅读 · 1 评论 -
SpringBoot:MultipartResolver 文件上传、大小限制相关配置、实现原理与自定义
如果不改spring.servlet.multipart前缀,SpringBoot还是会检查报错的,所以改一下my:servlet:multipart:@Data。原创 2022-05-15 12:42:26 · 9355 阅读 · 0 评论 -
java qtp开头的线程的哪来的,是哪个线程池的
日志中很多线程id,有的是线程池自定义的名称,还有很多qtp开头的,不知道他们是哪来的今天跟Jetty代码,才看到,这些是是Jetty的worker线程池QueuedThreadPool的org.eclipse.jetty.util.thread.QueuedThreadPool如下:<init>:133, Server (org.eclipse.jetty.server)createServer:982, JettyEmbeddedServletContainerFactory$Je原创 2022-03-25 13:40:49 · 1998 阅读 · 0 评论 -
SpringBoot配置jetty.threadPool.maxThreads能否生效
基于SpringBoot1.5.18Jetty线程架构模型Jetty的线程架构模型,分为acceptors,selectors和workers三个线程池。acceptors负责接受新连接,然后交给selectors处理HTTP消息协议的解包,最后由workers处理请求。前两个线程池采用非阻塞模型,一个线程可以处理很多socket的读写,所以线程池数量较小。SpringBoot1.5.18自带Jetty配置org/springframework/boot/spring-boot-autoconf原创 2022-03-25 12:03:52 · 2167 阅读 · 0 评论 -
Redis Cluster,Spring Lettuce连接池默认配置不支持高可用的问题 RedisConnectionException RedisCommandExecutionException
报错某新接到的项目发送严重问题,页面打不开,后台多种报错,redis三主三从节点挂了两个分片的一主一从问题排查应用日志redis节点连接失败javax.servlet.ServletException: org.springframework.data.redis.RedisSystemException: Redis exception; nested exception is io.lettuce.core.RedisException: io.lettuce.core.RedisConnec原创 2021-12-07 20:42:50 · 2783 阅读 · 0 评论 -
Spring 配置拦截器,禁用浏览器缓存HTTP请求
拦截请求,在response设置不允许缓存请求import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web原创 2021-11-29 09:57:56 · 932 阅读 · 0 评论 -
Spring自定义数据源配置不当引起的Mybatis拦截器Interceptors 失效/不生效
目录内容Interceptor接口与@Intercepts注解PageHelper实现拦截器自定义数据源与拦截器的问题自定义数据源注入拦截器内容Interceptor接口与@Intercepts注解org.apache.ibatis.plugin.Interceptor 是ibatis包的接口,org.apache.ibatis.plugin.Intercepts 是ibatis包的注解我们可以实现Interceptor 接口,并标注@Intercepts注解,做一个mybatis执行SQL时的原创 2021-10-12 20:29:59 · 9136 阅读 · 6 评论 -
Springboot启动,控制台卡死在 Parsed mapper file
问题Springboot启动,控制台停在 Parsed mapper file 'file[************mapper.xml]排查到源码这个方法的catch打断点,可发现异常org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactoryprotected Object doCreateBean(final String beanName, final RootBeanDefinition mbd,原创 2021-07-01 16:53:51 · 3964 阅读 · 2 评论 -
SpringBoot+Redis哨兵报错 RedisCommandExecutionException:ERR unknown command ‘SENTINEL‘
目录错误错误配置错误原因正确配置错误单机Redis切成哨兵集群Redis时报错:io.lettuce.core.RedisCommandExecutionException:ERR unknown command 's=SENTINEL‘错误配置密码、名称、ip做了加密处理(星号***) redis: timeout: 30000 password: *** sentinel: master: *** nodes: *.*.*.*:6379,*.原创 2021-06-18 16:40:41 · 8217 阅读 · 0 评论 -
显式使用HttpServletResponse响应的接口(下载文件等)别再加 return、@ResponseBody、@RestController
目录@ResponseBody的作用@RestController的作用使用HttpServletResponse的情况显示使用HttpServletResponse响应接口(下载文件等)后,如果再使用 return,配合接口的@ResponseBody、@RestController等注解,会导致一下报错@ResponseBody的作用@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回原创 2021-04-24 15:16:00 · 1668 阅读 · 0 评论 -
@Async 详解
学习注解,从注释和源码入手注释部分关键注释,我自己标注了一些中文注释便于理解:注解想要被设置成异步的方法/** * Annotation that marks a method as a candidate for <i>asynchronous</i> execution. * Can also be used at the type level, in which case all of the type's methods are * considered as原创 2020-07-27 17:09:48 · 4712 阅读 · 0 评论 -
Springboot集成Dubbo系列三:windows搭建dubbo admin控制台
搭建Zookeeper0.软件版本CentOS:CentOS Linux release 7.3.1611 (Core)Zookeeper:apache-zookeeper-3.6.21.下载Zookeeper安装包到https://zookeeper.apache.org/releases.html下载[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECp4o5gk-1611548673856)(C:\Users\Thunisoft\AppData\Roaming原创 2021-01-25 12:29:17 · 218 阅读 · 0 评论 -
正确可用版:SpringBoot+Mybatis-plus+Druid 实现配置多数据源(数据库)
前言此文介绍的是在SpringBoot中使用Mybatis配置多数据源(多个数据库),整合Druid网上有很多文章,翻了翻,但是都有问题啊,有的是没使用Druid,使用了默认的Hirika,有的是配置文件不给或者给的是Hirika能用的配置,层级不对,所以我自己来记一下代码pom文件maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid原创 2021-01-04 11:20:07 · 14401 阅读 · 4 评论 -
@EnableAsync 详解,@Async 如何生效
学习注解,从注释和源码入手注释部分关键注释,我自己标注了一些中文注释便于理解:作用:启用Spring的异步方法执行功能/** * Enables Spring's asynchronous method execution capability, similar to functionality * found in Spring's {@code <task:*>} XML namespace. * <p> * -- 与@Configuration注解配合使用,原创 2020-07-27 16:51:43 · 39869 阅读 · 2 评论 -
@Lazy原理/源码解析,如何解决Spring不能解决的循环依赖
目录@Lazy作用作用解决问题举例@Laxy使用@Lazy原理位置被Spring源码使用处ContextAnnotationAutowireCandidateResolver参与循环依赖解决总结@Lazy作用作用加在Bean上,指示是否要延迟初始化bean。如加在@Autowired注入的属性上,可以用来解决Spring无法解决的循环依赖解决问题举例例如两个Bean循环依赖,并且使用了@Async等注解,在系统启动 bean生成过程中抛出循环依赖异常,可在其中一个bean注入时加上@Lazy@原创 2020-12-12 14:48:51 · 4387 阅读 · 1 评论 -
@Async和循环依赖导致启动报错+解决(The dependencies of some of the beans in the application context form a cycle)
目录1.问题2.分析原因2.1 为什么使用@Autowired后还出现循环依赖报错2.2 注解在属性上的@Lazy如何解决循环依赖3.解决3.1 方案一 使用属性注入时添加@Lazy延时加载3.2 方案二 把allowRawInjectionDespiteWrapping设置为true3.3 方案三 使用AopContext.currentProxy调用本类方法4.代码4.1 原代码4.2 问题代码4.3正确代码参考1.问题今天解决了一个规范问题,代码中有一个地方使用了Thread直接起了一个异步现场,原创 2020-10-19 19:19:09 · 1213 阅读 · 0 评论 -
CGLib动态代理使用与原理
前言Java中代理有静态代理、动态代理,动态代理中又分JDK动态代理和CGLib动态代理本文讲一下CGLib动态代理的使用和源码实现,CGLib动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截,拦截所有父类方法的调用,顺势织入横切逻辑。比使用java反射的JDK动态代理要快基于jdk1.8.0_161,spring-core5.2.8RELEASE使用步骤1.新建被代理类2.新建MethodInterceptor接口的实现类,Override i原创 2020-10-13 13:02:56 · 381 阅读 · 0 评论 -
Springboot启动后,BeanDefinition的生成过程
目录前言代码流程1.JaylinApplication::main (com.jaylin.jaylin)2.SpringApplication::run (org.springframework.boot)3.SpringApplication::run (org.springframework.boot)4.SpringApplication::run (org.springframework.boot)5.SpringApplication::refreshContext (org.springfra原创 2020-10-01 21:20:45 · 2276 阅读 · 0 评论 -
Spring的三级缓存+循环依赖的解决方式 源码+流程解读
目录前言Spring的三级缓存寻找bean加载位置三级缓存(和他们的朋友们)bean创建与循环依赖解决流程从缓存取bean创建beancreateBeandoCreateBeanaddSingletonFactory获取创建的bean流程图前言大家好,我是oxye马儿,最近研究了Springboot的启动流程,非常长,bean加载流程在其中只是一块拼图,以至于我意识到并不能在一篇文章中将清楚,可能掌握很好以后可以概括一下吧这篇先写一下Spring的三级缓存+循环依赖的解决方式Springboot版本原创 2020-09-25 14:22:10 · 904 阅读 · 2 评论