- 博客(55)
- 资源 (1)
- 收藏
- 关注

原创 Feign挡板
最近在开发过程中,需要访问一个第三方系统的部分接口。但是第三方系统只提供生产环境供我们调用。由于项目在迭代过程中涉及到大量地方的测试并且第三方系统不允许将测试数据推送到对方的生产环境,我们采用了挡板的方式来保障测试的进行。 在我方项目调用第三方的系统,我方采用的是feignClient 调用的方式。当前spring微服务在各个系统中应用的范围越来越广,当前挡板适用于feign调用。使用方式是 1.在使用的feign调用方法上加上@HttpBaffle注释。 2.将jso...
2021-04-25 15:42:41
837

原创 java基于svnkit Api的开发
在java基于svnkit Api的开发过程当中,一个错误困扰了我很长时间,在调试过程中频繁的报一个错误,svn的更行操作总是不成功。 这个错误是SVNKIT-182 Received fatal alert: bad_record_mac; 相关原因我查询了很多的文档,初步估计是个jar包版本不兼容的问题,因为本机上Svn客户端是TortoiseS
2013-06-13 10:23:12
2206
原创 引入Springcloud--Sleuth-链路追踪中MDC是如何获取到traceid和何时放入traceid的
而CurrentTraceContext类型的bean是通过SleuthLogAutoConfiguration这个配置类注入的,可以看到以下代码,下面的代码通过后置处理器对CurrentTraceContext类型的bean进行处理,如果该CurrentTraceContext类型的bean不是Slf4jCurrentTraceContext类型的,则对该类型的bean通过代理的方式向spring容器中注入了Slf4jCurrentTraceContext类型的bean。在该类中通过以下代码。
2024-06-09 14:38:02
1422
原创 Thread Servlet思考
Thread是线程,在tomcat服务器中请求被接收后,会启动线程对请求进行处理。线程会通过run方法执行实际执行的业务逻辑。在tomcat中当请求请求到线程池后,从线程池获取到一个线程。该线程的会调用run方法,run方法中传入的是抽象后的调用流程。该流程最终会调用servlet里的service方法来处理请求的入参并返回出参。Thread和Servlet是独立的关系。Thread和操作系统交互实现了对请求的处理,是请求的载体。而Servlet作为实际的请求处理者实现了具体的请求分发和处理流程。
2024-06-02 14:01:32
273
原创 如何获取方法上声明的注解
对于CGLIB增强的类,需要先获取获取到增强类的目标类,获取到目标类后就可以通过getMethods方法获取到方法,通过获取方法上的注解方法最终获取到方法上的注解。开发过程当中部分场景需要获取到方法或类上的注解,但是经常会有无法渠道注解的情况,这种情况很可能是该注解所在的类是一个代理类,比如被AOP动态代理【注意:通过】。本文以CGLIB为例,说明为什么无法取到方法或类上的注解,还有如何取到注解。也就是说增强类方法列表中没有获取到注解信息,增强类的目标类的方法列表中得到了注解信息。
2023-10-16 20:01:27
428
原创 记一次SpringBoot中Service层未注入排查
查看Application.java启动类,发现Application类上没有配置ComponentScan,那么SpringBoot默认扫描Application文件所在同级目录下的所有类。发现ChildrenOneService和ChildrenTwoService在Application文件所在的同级目录下。所以在将ChildrenOneService和ChildrenTwoService类由抽象改为普通类后,注入成功了。检查这两个类发现这两个类的类定义里使用了abstract关键字来修饰类名。
2023-10-12 10:52:37
615
原创 SpringSecurity源码分析(二) SpringBoot集成SpringSecurity即Spring安全框架的执行过程
SpringSecurity的执行过程
2023-02-23 20:26:05
451
原创 SpringSecurity源码分析(一) SpringBoot集成SpringSecurity即Spring安全框架的加载过程
SpringSecurity源码学习,本文主要讲述Spring安全框架的加载过程
2023-02-19 11:37:36
1571
原创 SpringMvc源码分析(三) 请求执行过程之获取MethodHandler
本文主要讲述当请求发起后DispatcherServlet是如何获取到MethodHandler的
2023-01-18 11:27:33
1366
原创 SpringMvc源码分析(二) 请求执行前的准备过程:@Controller/@RequestMapping注解解析为RequestMappingInfo的过程
本文主要讲述@Controller 和 @RequestMapping注解是怎么解析成后面调用需要的RequestMappingInfo对象的
2023-01-16 10:40:03
710
原创 SpringMvc源码分析(一):启动tomcat服务器,加载DispatcherServlet并将DispatcherServlet纳入tomcat管理
SpringMvc源码学习
2023-01-11 15:50:41
1065
原创 Cannot download sources Sources not found for 问题解决方案
Cannot download sources Sources not found for:问题处理
2023-01-03 16:38:30
739
原创 读取excel中的url链接下载图片并生成新excel保存图片
通过hutool读取excel中的链接并获取下载链接中的图片保存到生成的excel上,该代码只是一个玩具。
2022-08-29 11:08:43
1234
转载 Linux 常用命令
一、Linux下常用命令:文件与目录操作basename:从文件名中去掉路径和扩展名cd:切换当前工作目录到指定目录chgrp:改变文件所属组chmod:改变文件的权限chown:改变文件的所有者和组cp:复制文件或目录dd:复制文件并转换文件内容file:确定文件类型find:在指定目录下查找文件并执行指定的操作ln:创建文件链接locate/sloc...
2022-07-11 14:55:31
192
原创 mybatis sql xml文件读取源码分析
在执行一个自定义sql语句时,dao对应的代理对象时如何找到sql,也就是dao的代理对象和sql之间的关联关系是如何建立的。 在mybatis中的MybatisPlusAutoConfiguration类被@Configuration注解,在该类中通过被@Bean注解的sqlSessionFactory方法向spring上下文注入bean并生成SqlSessionFactory类型的bean实例。关注该方法的最后一行代码。 @Bean @ConditionalOnMi...
2022-03-21 09:18:29
859
原创 基于MapperScan注解的Mybatis动态代理加载机制
1.在springboot项目通过MapperScan注解方式,扫描dao,并通过动态代理的方式。/** * 程序注解配置 * * @author ruoyi */@Configuration// 表示通过aop框架暴露该代理对象,AopContext能够访问@EnableAspectJAutoProxy(exposeProxy = true)// 指定要扫描的Mapper类的包的路径@MapperScan("com.ruoyi.**.mapper")public class Ap
2022-03-20 15:30:24
1295
原创 swagger报Whitelabel Error Page status=405问题解决
访问swagger链接时报如下错误Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Thu Mar 17 20:14:30 CST 2022There was an unexpected error (type=Method Not Allowed, status=405).Request method 'GE.
2022-03-17 20:16:24
4915
4
原创 一、SpringBoot整合Mybatis源码学习
MyBatis是一款优秀的持久层构架,它支持定制化SQL语句、存储过程以及高级映射,可以通过简单的XML或注解配置和映射原生信息,将POJOs映射成数据库中的记录,从而方便进行增删改查的操作一直想学习下常用的ORM框架Mybatis,在学习这个框架时脑海中存在以下几个问题:1.springboot在服务启动时是怎么加载接口dao,是如何读取并解析xml配置文件的?2.spring中dao层对应的方法的是怎样执行的?3.执行过程中事务是怎么实现的?4.经常说的mybatis一级缓存和二级缓
2022-03-16 16:51:26
115
原创 FeignClient配置Apollo动态url不生效问题
最近公司同事遇到一个问题,在FeignClient注解里配置动态url不生效。配置为@FeignClient(name = "xxxService",url="${timi.url}")。该动态url读取的apollo的application命名空间里的配置。 问题出现的原因时yml里配置...
2021-12-24 17:12:21
3431
原创 Spring未配置Apollo application命名空间为何还能加载配置
spring在启动时会读取yml中对应的配置app.apollo.bootstrap.namespace,通过该命名空间去apollo读取对应的配置。详见:SpringBoot启动加载Apollo配置过程_xl649138628的专栏-CSDN博客 但是在实践中我们发现yml中未配置application命名空间的情况下我们还是能够读取application的配置。现在我们通过追踪源码来拨开迷雾寻找真相。 在Apollo中存在PropertySourcesP...
2021-12-24 16:32:03
1860
原创 Feign调用fallback机制不生效问题
最近发现公司代码里的feign调用fallback机制没有生效原因是feign.hystrix.enabled = false
2021-12-21 17:27:53
1774
原创 SpringBoot启动加载Apollo配置过程
1.在SpringBoot项目启动时通过SpringApplication.run方法来启动项目public class ApolloApplication { public static void main(String[] args) { SpringApplication.run(ApolloApplication.class, args); }}2.点击run方法并找到run方法的实际执行方法,在run方法种有一个prepareContext方法里实
2021-12-21 15:57:00
4730
原创 Spring自定义注解的动态参数
最近写了一个自定义注解@OutHttp应用于方法其中包含参数url,但是测试和生产环境的url不一致。如果不通过动态参数的方法是无法适配测试和生产环境不一致的情况。 在项目中使用的配置中心是携程的apollo,如果了解过apollo的人都知道,spring在启动过程中将Apollo中的配置通过请求将数据获取到应用并放置在context 环境变量envrioment的propertySource中。而propertySource是一个Map接口,只要获取到key就可以获取到valu...
2021-12-20 09:16:47
2117
原创 喜马拉雅jssdk接入demo JAVA版
package com.changshin.himalaya;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.net.URLEncoder;import java.security.InvalidKeyException;import java.security.KeyManagementException;import java.security.KeyStoreExc..
2021-06-04 10:45:42
471
原创 基于线程池的多线程查询功能
package com.changshin.threadpool;import javax.annotation.PostConstruct;import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;public class ThreadPool { /** * 连接池 */ private ExecutorService pool; @PostC.
2021-04-25 13:49:16
393
原创 FileOutPutStream读取服务器上的Excel文件下载时文件名称只有.xls[1]
修改前代码、修改后代码原因是穿过来的fileName 是中文,而http header头要求其内容必须为iso8859-1编码。如String s_iso88591 = new String("海".getBytes("UTF-8"),"ISO8859-1"),这样得到的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符,在将这些字符传递到目的地后,...
2019-04-18 15:38:51
1414
转载 PLSQL Developer 没有64位版本 + 找不到 msvcr71.dll
由于 PLSQL Developer 没有64位版本,所以在64位系统上运行该程链接64位Oracle时就会报错,笔者为这个问题纠结了好几天,后来通过请教Google + 动手实践,终于搞定了这个问题。现在把笔者解决的过程记录下来,分享给遇到同样问题的网友们。首先到Oracle官网上下载一个32位的客户端(instantclient),一定要下载 basic 版本的,不要下载 basi
2016-11-20 16:44:26
566
原创 LODOP横向打印预览正向显示
以下是横向打印预览代码,如果要预览内容正向显示需加上红色标记代码function CreaeteListPageTransverseYZ(){LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_打印表格");""LODOP.SET_PRINT_PAGESIZE(2,"297mm","210","");var strBodyStyle=""+$("#previe
2016-01-28 15:40:21
16438
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人