java web开发
文章平均质量分 50
weixin_45614626
这个作者很懒,什么都没留下…
展开
-
java后端接口实现302跳转
java后端实现302跳转原创 2023-07-26 18:10:19 · 2017 阅读 · 0 评论 -
关于原生feign发起请求时,参数注解的相关问题
feign请求时传参需要怎么使用注解原创 2023-05-26 17:09:28 · 1120 阅读 · 0 评论 -
java项目里配置feign,两种使用方式
java中使用feign原创 2023-03-31 11:36:30 · 551 阅读 · 0 评论 -
feign配置hystrix,增加熔断降级,两种情况的不同配置
对于feign的两种调用方式,配置hystrix的方法原创 2022-09-29 17:51:54 · 1620 阅读 · 0 评论 -
feign发起POST请求application/x-www-form-urlencoded
关于feign发起post请求且参数类型为application/x-www-form-urlencoded原创 2022-07-07 14:42:41 · 4160 阅读 · 0 评论 -
关于java中controller层接收http请求参数的问题
看代码的时候发现了个奇怪的写法,post请求没有用注解接收参数,但是运行成功。自己试了一下:@RestController@Slf4j@RequestMapping("/test")public class TestController { @PostMapping("/t1") public R<?> test(String eva,String ava){ System.out.println(eva); System.out.pri原创 2022-05-18 17:58:53 · 812 阅读 · 0 评论 -
关于spring异步的一些问题
1.对于异步线程操作,其实spring中已经封装好了一个注解,@Async,如果需要自己配置线程池的参数,只需要单独覆写AsyncConfig配置文件即可。但是对于这个注解的使用有一点需要注意,必须把异步方法放在一个单独的service里边,如果在同一个文件中进行调用,该注解是不起作用的。另外还需要在启动类上加@EnableAsync注解。@Async2.还有一种传统的方式是自定义线程池,使用new Thread来创建异步线程,或者使用CompletableFuture来执行。但是这两个有个很大的区原创 2022-04-28 14:23:00 · 2483 阅读 · 0 评论 -
GET请求传参对象的list
之前试过get请求传参是数组,但是试的都是基本类型,现在需求要是自定义的对象,怕写的不对,就提前自测了一下。调用方代码:@Resource private TestClient testClient; @Test public void apiTest(){ List<UserVO> list= new ArrayList<>(); UserVO t = new UserVO(); t.setBizId(10原创 2022-04-24 17:40:05 · 9349 阅读 · 0 评论 -
feign请求拦截器中读取配置文件的问题
码代码的时候遇到个问题,去请求某个服务方的时候,需要在header里放签名进行校验,签名是通过SHA256算法生成的。sig的值和密钥及key有关,不同环境这些配置又不一样,所以就想到,把key和secret放在不同环境的配置文件中,这样直接去读就行。拦截器的写法:@Component@Slf4jpublic class LabelInterceptor implements RequestInterceptor { @Value("${key}") private String K原创 2022-04-18 10:09:45 · 728 阅读 · 0 评论 -
feign中在路径中动态拼接参数
有时候我们会遇到在路径中拼接参数的情况,如果是原生http的话我们自己拼接url字符串时候进行替换就可以了,但是feign调用的时候就不会了,于是我就研究了一下。feign调用分为两种情况,1.我经常使用的注解是@RequestLine,即通过工厂类来生成feignclient,然后需要重写feignBuilder,此时想要替换,只能搭配@Param注解,具体如下:public interface ArticleClient { /** * @param articleId原创 2022-03-28 15:04:02 · 3078 阅读 · 0 评论 -
java打印请求参数日志
之前写过一篇博客,是通过拦截器的方式对所有http请求进行日志打印,但是这有一个严重的问题,那就是body数据只能从流里取出来一次,虽然通过复制的方式解决了这个问题,却又引入新的问题。项目进行流读取及流复制的操作是一件非常消耗CPU资源的一件事,当并发数不高的时候服务会很正常,但是并发数高起来之后就需要更多的CPU核数来支持服务运行。正因为上述考虑,随后将日志从拦截器中改为了aop,这样就不存在多次读取流的问题,本质上切面拿的是controller层方法入参,跟servlet就无关了。具体代码如下:@原创 2022-03-24 17:24:16 · 4420 阅读 · 0 评论 -
feign发起请求传参的坑
今天写feign调用的时候发现个问题,本来写法是这样的public interface TestClient { @RequestLine("GET /test/param") JSONObject getTest(@RequestParam("param") List<String> params);}这是我习惯的写法,专门有个feign工厂类来生成对应的feignclient,@Configurationpublic class TestFactory {原创 2022-03-23 16:39:28 · 506 阅读 · 0 评论 -
java如何在拦截器中取出post请求参数
get请求参数很好取出,但是对于post请求body里边的参数,因为是从流里边取,而这个流又只能取出来一次,如果你再拦截器里取出打印,后边的controller接口就无法在接受到请求参数,因此,你只能取出数据的同时,复制一份再放回去。具体代码如下:public class NewHttpRequestWrapper extends HttpServletRequestWrapper { private final String body; public NewHttpRequestWr原创 2022-03-01 15:04:33 · 4373 阅读 · 0 评论 -
记一次feign拦截器报错404NOT FOUND问题排查
因为链路追踪需要将前端请求中的header参数统一转发至下游服务。对下游服务http接口的调用我使用的是feign,因此我采用了统一加拦截器配置的做法,写了一个拦截器。具体见feign拦截器但同时我也需要将请求的参数打印出来,这里牵扯到另一个问题,post的body参数是从流里边取出的,但是这个流只能取一次,所以我又重写了一个方法,来复制流中的数据。这时候出现了诡异的事情,本地运行完全没问题,一上测试就出问题。容器里边的报错信息是404 NOT FOUND,这个第一想法是路径有问题,可是本地调用完全没原创 2022-03-01 14:55:30 · 2691 阅读 · 2 评论 -
feign发起请求时如何设置Header参数
以前一直用feign发起请求,但是不知道怎么在header加参数,今天试了一下自定义header参数。controller层代码@RestController@Slf4j@RequestMapping("/test")public class TestController { @GetMapping("") public R<?> testController(HttpServletRequest httpServletRequest){ String原创 2022-02-22 11:41:39 · 5116 阅读 · 0 评论 -
Feign的post请求参数设置
feign的post和get请求之前写的一篇博文,这次发现有个小问题,修改了,顺便把测试用例粘贴上来。controller的方法: @PostMapping("/testPost") public TModel<?> testReward(@RequestBody JSONObject body){ System.out.println("done"); System.out.println(body.toJSONString());原创 2021-08-24 17:44:52 · 2644 阅读 · 0 评论 -
Post请求参数是数组或者List时的请求处理
和别的同事对接口的时候发现,他提供的post请求格式接口的参数是int[],就在想,参数应该怎么传递,我这边塞一个int[]或者List 是不是都可以?盲猜是可以的,因为http传递参数的时候都是json,接收的时候int[]和List其实都能接收得到,但是还是不确定,就写个test简单测一下。一、使用POSTMAN测试两次都能调用成功,注意参数写法,不再是{},而是[]二、java代码调用事实证明,请求端无论传list还是数组,服务方都可以接受得到,而且list和数组都可以接受。顺便原创 2021-08-12 10:07:54 · 15568 阅读 · 2 评论 -
dubbo服务provider代码出现异常时,控制台不输出异常信息
最近在调试的过程中发现,自己写的dubbo服务出现了异常,日志却什么error和exception信息都没有,但是平时的程序,有异常都会自己打印出来,很是费解。查了一圈资料发现了问题。首先平时程序都是用的tomcat的容器配置,有异常或者错误都会自动打印到控制台,dubbo用的不一样,所以就造成这种问题。解决方案有两个:①在配置文件中显示指定dubbo的日志格式:slf4j,dubbo默认的是log4j。在YAML文件中写dubbo: application: logger: slf4j原创 2021-06-17 15:12:35 · 627 阅读 · 0 评论 -
Feign请求中Post和Get请求参数设置
在使用openFeign包中的包装方法时,可以通过注解的形式指定参数类型。其中@QueryMap用于get请求,会将参数拼接在url后边;@RequestBody则会将参数放在body里,默认是json形式,也可以显式指定body的数据格式`@RequestLine("POST /ac/vote/get") @Headers({"Content-Type: application/json", "Accept: application/json"}) JSONObject getVot原创 2021-06-15 16:16:33 · 2089 阅读 · 0 评论 -
java类Calendar中before和after方法的缺陷
在实现需求的时候,发现同样的日期进行比较,before和after输出的结果居然不一样。按理说两个比较都不包含等于0的情况应该返回的都是false,但是最后在调试的过程中居然会有true的情况。Calendar birthday = Calendar.getInstance();//月份减一才是真正的月份,设置的是索引而不是实际的月份birthday.set(1992,2,16,0,0,0);Calendar current = Calendar.getInstance();current.s原创 2021-05-31 11:31:38 · 1618 阅读 · 1 评论 -
java中Calendar类
在设置日期的时候,特别要注意,month月份的设置不是说你设置3,他就是三月份,你设置3他会转换成四月份,原因是,这个月份java中会有一个类似于list的数据组,放1-12月份,你填写3,就表示第三个位置上的月份,数组下标从0开始,所以就是四月份了。上边是源码,下边是例子Calendar time = Calendar.getInstance();time.set(1994,3,24,0,0,0);Calendar time2 = Calendar.getInstance();time2.se原创 2021-05-31 10:25:49 · 53 阅读 · 0 评论 -
利用java代码给mongo数据库加索引、删除索引等操作
晚上搜了一下相关代码,不是互相抄瞎写就是答非所问,只好自己摸索着写一下,修改之后那这篇文章记录一下,免得以后遗忘。我是在springboot项目中创建了一个类,需要创建索引的时候,在Test里写个函数跑一边就可以了。package com.sohu.umab.usercenter.service.impl;import org.springframework.data.domain.Sort;import org.springframework.data.mongodb.core.MongoTem原创 2020-12-03 14:17:58 · 1038 阅读 · 4 评论 -
如何利用dubbo的filter来处理自定义异常
有时候项目里会自定义异常来处理一些逻辑上的特定问题,此时可以利用自定义的异常捕捉filter来对所有的dubbo接口进行统一处理。具体的filter代码如下:自定义的filter需要继承ListenableFilter。@Activate@Slf4jpublic class DubboFilter extends ListenableFilter{ public DubboFilter() { super.listener = new DubboFilter.Except原创 2020-11-27 19:31:15 · 794 阅读 · 0 评论 -
Dubbo接口中的Filter
如果是http请求的话,filter很容易就能写出来,现在项目全部换成dubbo接口,也想使用拦截器进行统一操作预处理,就需要用到dubbo里的filter。自定义的filter需要去实现org.apache.dubbo.rpc.Filter接口,同时实现接口里边的invoke方法。具体步骤如下1.编写filter类,该类实现org.apache.dubbo.rpc.Filter接口以及接口的invoke方法。@Slf4jpublic class DubboFilter implements Fi原创 2020-11-27 19:18:13 · 1571 阅读 · 0 评论 -
java代码里redis存任何类型取出来都是String
出现这种问题,是因为你在项目里配置redis的时候选择了stringRedisSerializer()导致的,仔细检查代码里关于redis的配置部分,你能看到redisTemplate.setKeySerializer(stringRedisSerializer()); redisTemplate.setValueSerializer(stringRedisSerializer()); redisTemplate.setHashKeySerializer(stringRed原创 2020-11-18 14:30:32 · 1829 阅读 · 1 评论 -
Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL
在写Mapper文件中的SQL语句时,写完单元测试报了如下错误Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use****查了许久没发现问题,最后终于发现了。@Selec原创 2020-10-28 16:56:42 · 3021 阅读 · 1 评论 -
百度小程序支付、对账功能java后端代码
之前写的技术介绍文档:开发介绍文档里边还包括微信端小程序相关功能开发流程的介绍。相比于微信的开发流程来说,百度的支付功能相对简单,因为全程和百度平台没有交互,只有对账时比较麻烦。controller层就不做介绍了,主要还是service...原创 2020-09-28 16:02:09 · 817 阅读 · 2 评论 -
微信小程序支付、对账java后端代码
之前写的一个开发注意事项总结:微信百度支付开发今天梳理一下微信小程序支付这块儿的代码。controller层的代码主要是为了和前端进行交互,传一些参数,跟自己的业务需求相关,就不梳理了。主要说一下service层以及一些utils。/** * 微信端操作,调用微信统一支付订单API,并将信息封装 * * @param openId * @param fee * @param IP */ @Override public Ma原创 2020-09-27 15:45:24 · 1227 阅读 · 0 评论 -
微信百度小程序支付java后端开发
上周接了公司的需求,在微信和百度小程序中开发支付功能以及定时对账功能。花了快一周时间,看了大家的不少经验,终于把这个需求给做完了,微信支付流程以及对账流程已经走通,百度的还没有进行测试,现将一些注意事项写出来,后续会将一些大概的代码进行分享。微信小程序支付开发文档:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3一、小程序后端负责生成根据用户的信息,已经购买的相关信息生成订单的编号等信息,通过这原创 2020-09-25 15:31:05 · 514 阅读 · 0 评论