
java
文章平均质量分 86
JAVA-cjing
我是这样的人,如果你问我一个问题我不知道答案的话,我会直接告诉你“我不知道”。但我向你保证:我知道怎样找到答案,而且我一定会找出答案的
展开
-
Springboot如何设计出优雅的后端(API)接口(二)
前言接着上一篇的文章Springboot如何设计出优雅的后端(API)接口(一)首先我们回顾一下之前所说需要解决的问题:统一返回接口格式。全局异常处理。参数常规非空校验。通用的分页对象。日志统一格式。常用工具类。接口文档。接口的安全。在Springboot如何设计出优雅的后端(API)接口(一)已经解决了前4个问题,那么这篇文章就给大家解决下面4个问题。日志的统一格式日志的话我习惯性采用logback来配置:所谓的统一格式,也就是日志配置文件的内容:<?xml vers原创 2020-12-03 10:51:04 · 1043 阅读 · 1 评论 -
Springboot如何设计出优雅的后端(API)接口(一)
项目背景现在绝大部分项目都是采用前后端分离的模式,对于前端来说,后端如果能有一个规范的、优雅的设计的api模式,那么前端的开发将会事倍功半,同时对于后端来说,统一的格式也有利于后期的维护和扩展(其实主要是甩手的时候,不至于下一个人看不懂=。=)。一个后端的接口分为四个部分:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。下面我们就从这四个部分分析需要的注意的点。后续我会把项目上传到github上,感兴趣的同学可以帮忙点个爱心。需要思考原创 2020-12-02 15:19:47 · 4446 阅读 · 1 评论 -
Springboot中使用apidoc生成接口文档
为什么需要接口文档当前后端分离时,需要前后端共同定义接口,编写接口文档。所以,在项目开发过程中需要有一个统一的文件进行沟通交流开发。对开发人员而言,项目的维护和人员更迭,都需要文档来作为记录。方便后期人员查看、维护。有哪些常用的API自动生成文档工具swagger 这款工具感觉是最常用的一款自动生成文档的工具。附上官网地址:https://swagger.io/apidoc。第一...原创 2018-10-16 16:40:24 · 18157 阅读 · 0 评论 -
springboot多模块项目搭建之整合mybatis
序言继续上一篇博客,除了dao层的相关的代码,service层和web层都已经编写完成,而且各个层之间依赖关系都已经加入了。不熟悉的同学可以看看我上一篇的博客,地址:https://blog.youkuaiyun.com/bicheng4769/article/details/83387389集成mybatis首先我们之前已经讲过了,所有的包都要放在父pom.xml的文件中,大家可以注意到maven中有...原创 2018-10-26 14:56:31 · 5353 阅读 · 4 评论 -
http文件上传的原理以及Spring中如何处理上传文件
问题背景:最近在做人脸相关的接入,很简单的一个demo,需要图片上传功能,那么我们该怎么操作才能将图片从本地上传到服务器呢?原创 2018-10-24 15:18:40 · 2833 阅读 · 0 评论 -
maven多模块项目打包war包或者jar包
序言:前两篇博客给大家介绍了如何用maven搭建一个多模块的项目,包括整合mybatis。附上地址:基础模块搭建:https://blog.youkuaiyun.com/bicheng4769/article/details/83387389集合mybtais:https://blog.youkuaiyun.com/bicheng4769/article/details/83413726经过前两篇博客的学习,我相...原创 2018-11-02 16:59:05 · 19125 阅读 · 0 评论 -
SpringBoot整合Quartz定时任务(持久化到数据库)
背景最近在做项目,项目中有个需求:需要使用定时任务,这个定时任务需要即时生效。查看Quartz官网之后发现:Quartz提供两种基本作业存储类型:RAMJobStore :RAM也就是内存,默认情况下Quartz会将任务调度存在内存中,这种方式性能是最好的,因为内存的速度是最快的。不好的地方就是数据缺乏持久性,但程序崩溃或者重新发布的时候,所有运行信息都会丢失JDBC作业存储:存到数据库...原创 2018-12-27 14:25:44 · 65979 阅读 · 13 评论 -
SpringBoot2.0集成Shiro
最近搞了下shiro安全框架,网上找了好多篇博客,感觉要么都是复制粘贴,要么就是错误百出。至于稍微讲解一下为什么要这么做,就更别说了。这篇文章就教大家如何将 Shiro 整合到 SpringBoot 中,并且避开一些小坑,由浅入深,从最基本的配置开始,一步一步加入新的功能。这样理解起来也稍微简单点项目版本:springboot2.xshiro:1.3.2Maven配置: ...原创 2019-01-28 17:14:08 · 95374 阅读 · 77 评论 -
Springboot中使用RestTemplate(一种更为优雅的调用RESTful服务的方式)
背景我们在开发java后端的时候,多多少少会遇到一些需要接受别人数据的时候,那通常这种情况,对面大多数情况下都会使用HTTP的方式来提供接口。按照之前的开发经验,大多数人会采用apache的HttpClient开发,或者使用OKHTTP开发。但这两种方式,都需要很长一段代码(或者我直接复制一个类过来),代码复杂、还要担心资源回收的问题。RestTemplate是Spring用于同步clien...原创 2019-08-06 16:20:38 · 19393 阅读 · 1 评论 -
Spring中如何使用Quartz
背景:接着上一篇文章,项目当中有个需求需要定时去检测工单的状态,这时我就想到了使用quartz来做一个任务调度系统。本篇文章就是给大家介绍如何在spring中加入quartz。spring集成Quartz:首先第一步肯定是在pom文件中导入相关的包。pom.xml: <dependency> <groupId>org.apache.loggin...原创 2018-07-20 11:27:03 · 4375 阅读 · 2 评论 -
Quartz框架介绍
问题产生背景:最近在做项目,有个需求:就是需要定时去执行某一项任务。谈到定时,我第一个想到就是QuartzJob 这个任务调度系统,借此博客,给大家分享一下使用过程中的一些技巧。Quartz介绍:什么是Quartz:引用官网的一段话 Quartz is a richly featured, open source job scheduling library tha...原创 2018-07-18 17:51:35 · 53205 阅读 · 12 评论 -
设计模式之建造者模式(变种Builder模式)
问题产生背景:最近在项目中使用了一个HTTP网络请求框架—OKHttp。在使用过程中,发现一段很有趣的代码如下:HttpUrl url = new HttpUrl.Builder() .scheme("http") .host(host) .port(port) ...原创 2018-07-10 18:16:14 · 4115 阅读 · 1 评论 -
在SpringAOP中如何获取方法的参数值(实体类)以及参数名
在前几篇的博客中,我利用AOP来做日志管理。感兴趣的同学可以去了解下(附上地址) https://blog.youkuaiyun.com/bicheng4769/article/details/79702778实际产生的问题在利用AOP管理日志的时候,遇到这样一个需求,需要将方法的参数、方法名记录下来。其实这样的需求很简单,我在前面那篇博客也讲过,就是利用java的反射机制获取。但是实际中会有这...原创 2018-04-19 19:34:54 · 47793 阅读 · 15 评论 -
AOP实现原理(一)JDK动态代理
背景在前几篇文章中,我们介绍了AOP的使用方法,辣么AOP为何会如此神奇呢?通过查阅资料,我们了解到AOP的实现是通过代理去实现。 在分析问题之前我们应该有如下几点疑问: 1. 什么是代理。 2. AOP实现代理方式有几种,这几种方式各有什么优点。 3. 如何去实现AOP的代理方式。介绍动态代理 : 在程序运行期间由Java反射等机制动态生成,也就是在将class加载到j...原创 2018-04-21 15:07:15 · 2210 阅读 · 0 评论 -
AOP实现原理(二)CGLIB动态代理
上一篇博客中给大家介绍了AOP中的JDK动态代理。附上地址: https://blog.youkuaiyun.com/bicheng4769/article/details/80028158回顾一下上一篇的内容,JDK动态代理必须要求目标类实现接口才能使用。那么在AOP的使用中,我们貌似没有这个限制,所以这里AOP还有一种动态代理的机制:CGLIB动态代理。什么是CGLIBCGLIB(Co...原创 2018-04-21 16:10:55 · 3461 阅读 · 1 评论 -
Junit4在SSM中应用
项目背景最近在看Spring相关知识,在看源码之后,注意到项目结构是包含main和test2个文件夹。main文件包含的当然是源文件,而test是针对src源文件构建的测试类。具体如图所示 单元测试: web项目中怎么针对某一模块进行单元测试,我之前的方法是每次启动tomcat,然后通过页面点点去触发需要测试的代码。但这样会带来一个问题: 当项目小的时候,一切ok,没问题。但是...原创 2018-05-25 17:09:42 · 938 阅读 · 0 评论 -
初识springboot(二)
写在前面的话 :在上一篇文章中,我已经给大家简单介绍了springboot的一些基本的用法,包括整合Mybatis、thymeleaf。相比较ssm框架,springboot在配置方面真的是太省事了。 那么在这边文章中,关于springboot的一些基本用法就不给大家介绍了,这篇文章主要是给大家介绍一些实际开发中可能会用到的知识点或者说是一些小技巧。可能会遇到的问题:1. 多套环境的...原创 2018-06-11 12:28:10 · 412 阅读 · 1 评论 -
初识springboot(一)
学习背景:闲来无事,自己想捣鼓点东西。反手就去”spring套餐”中看看有没有比较流行的框架。找到这个地址: https://spring.io/projects。排在第一个就是springboot。(建议有点ssm基础的人阅读此文)SpringBoot介绍:这里我们引用官方介绍的一段话:Spring Boot makes it easy to create stand-...原创 2018-06-08 15:52:19 · 379 阅读 · 0 评论 -
webMagic爬取网易云音乐评论
前期准备:在前几篇文章中给大家介绍了如何去使用springboot,但是光说还不行,我们得在实际项目中去使用,加深自己对springboot的印象。 我自己选择的一个项目就是利用爬虫爬取网易云音乐的热评(自己很喜欢每首歌后面的评论,特搞笑)。那么首先第一步我们必须明白什么是爬虫。所谓爬虫就是大量获取网页上的数据,利用模拟http请求,分析返回的数据的一个过程。 第二步我们采用什么方式去做爬...原创 2018-06-25 18:13:05 · 2311 阅读 · 2 评论 -
网易云音乐评论加密解析
写在前面的话:本文是承接上一篇博客https://blog.youkuaiyun.com/bicheng4769/article/details/80802184中对网易云音乐中获取评论所需要的两个参数params和encSecKey的进一步分析和讨论。主要内容包括从一开始寻找参数,到如何获取参数加密的方式,到如何通过java实现加密算法的过程。 你能学到的内容:AES加密、抓包工具使用、java中如何...原创 2018-06-26 15:57:09 · 3641 阅读 · 3 评论