spring-mybatis两个标签与两个配置 关于spring-mybatis,有两个标签:@MapperScan 、@Mapper和两个配置:mybatis.type-aliases-package与mybatis.mapper-locations,经常在各个配置文件中看到,用于spring结合mybatis使用,有时候可能会有点弄混了,什么情况下必须使用?简单介绍下。
java启动命令日志输出重定向 1、问题描述java启动项目命令:nohup java -jar -server -Dserver.port=10001 -Xms1024M -Xmx1024M -Dspring.profiles.active=dev /usr/local/application/laowang/laowang.jar >/dev/null 2>&1 &执行起来是没问题,关于日志输出重定向,开始有点搞混了,记录下。2、解决方案1、首先要明确的是,nohup这些是在linux下执行的
Mybatis Generator使用小技巧 1、问题描述mybatis generator 简单说就是生成一些mybatis的公共方法,用了好多年了,一直也没记录过,最近使用稍微有了点变话,简单记录下,方便下次使用,也希望可以帮到其他人。2、解决方案最近使用主要有两点变化:(1)以前使用,指定了本地数据库驱动jar包,本次直接用maven,dependency指定下就好了,配置文件配置好后,团队人员都可以执行;(2)发现朋友使用的方式挺好的,就是初期开发过程中,不可避免的会增加或修改一些字段,xml中新加或者重新生成方法,都有点麻烦,通过新
一次打包,多个环境运行(开发、测试、生产等) 1、问题描述以前常用的,使用maven插件根据不同环境(开发、测试、线上)打不同的包,方便吧? 也还可以,但是打各个环境的包配置文件不一样(maven打包是指定了编译配置文件,未指定不会打包进来),有时候包会出现混淆,影响使用;最近使用了jar启动命令指定profiles文件,个人感觉更加合理一些,不使用maven插件打包,就打一个包,在不同的环境下,配置不同的启动参数就可以了,启动命令只需配置一次,一个包,就能用到不同的环境,开发、测试、线上环境都可以用,简单介绍下。2、解决方案简单来说就是使用ja
自定义注解+AOP记录访问日志 1、问题描述AOP拦截请求,记录请求参数、返回参数及响应时间,以前已经介绍过了,但是发现有个小问题,就是有些心跳或者仅仅是查询字典下拉框的请求,本身不用记录,排除的话,需要一个一个排除,有点麻烦,就用自定义注解对aop记录请求与返回做了个下改进,简单记录下。2、解决方案简单说就是新建个自定义注解标签,然后对需要记录日志的的方法加上标签就可以了。2.1 自定义标签import java.lang.annotation.*;@Documented@Retention(RetentionPolic
java项目,记录页面修改值,内部打“官司”用 1、问题描述业务需求:项目中的配置信息,关系到程序跑出来数据准确性,需要记录下什么人、什么时间、修改了什么字段,原来值、最新值,以便回溯,防止扯皮,内部打“官司”用。2、解决方案通过java反射,后台程序比对前端传入值与数据库中值,并记录下来;2.1 测试实体类import lombok.Getter;import lombok.Setter;@Setter@Getterpublic class User { private String name; private S
再议java日志管理logback 1、问题描述关于java中的日志管理logback,去年写过关于logback介绍的文章,这次项目中又优化了下,记录下,希望能帮到需要的朋友。2、解决方案这次其实是碰到了一个问题,一般的情况是,会单独在linux上创建个用户,线上和开发环境一样,这样脚本中假如有相对目录的话,也能保持一致,但是这次因为线上环境创建其他用户有问题,只能用root用户操作,导致logback定义的目录,开发和线上不一致,线上是root/***,开发环境没有权限访问该目录(开发环境使用的普通用户),所以logback的目录,
提高实战开发效率n倍(0<=n<=100),IDEA插件及setting设置 1、背景描述开发工具Idea是程序员很重要的开发平台,通过插件或者setting设置,能明显提高开发效率,介绍下软件老王目前用的插件和setting配置,有需要的朋友可以参考下。2、解决方案插件都是老王目前在用的的,不分先后,不过有些老王感觉很小的点或者用的不多的,也就不说,老王目前使用idea是2019.1.3,因为某些配置怕升级idea版本有影响,就没升级,不过也无所谓。2.1 free mybatis plugin该插件作用是:可以从mapper类,跳转到对应的xml方法,该插件与Myb
SpringBoot-AOP环绕通知记录日志/鉴权 1、问题描述微信公号h5开发,前后端分离,因为是在微信公号里面操作页面,还有涉及到不同手机操作也不一样,导致联调比较麻烦,定位问题也麻烦,以前写过通过aop记录所有前端http请求,就又拿出来梳理了下,记录日志,记录下,希望可以帮到有需要的朋友。2、解决方案项目是springboot项目,通过springboot-aop,配置环绕通知,记录调用地址、入参、返回参数、ip,同时记录执行时间等,以便定位问题。具体的入库就是弄个表,保存下获取到的值,这里就不多做介绍了。2.1 AOP简要说明(1)什么是
Http调用-静态封装类(RestTemplate) 1、问题描述项目中封装了个restTemplate的静态调用类,分享下,希望能帮到需要的朋友。2、解决方案2.1 简要说明:以前用httpclient用的比较多,后来开始用restTemplate,查了两者的区别,大部分无非就是:(1)restTemplate是包含在spring包中的,使用起来更加方便一些,调用也简洁一些;(2)restTemplate的低层支持多种调用,比如:httpclient、HttpURLConnection等吧; 个人认为两者都是为了发送http请求,本质上
一个神奇的标签-@PostConstruct 1、问题描述项目中封装了个restTemplate的静态调用类,统一调用外围接口,但是发现外围系统有些接口反应时间不稳定,还存在失败的情况,为了便于追踪问题,将对外围系统的入参和出参以及响应时间写入到数据库中,但是项目中都是通过静态类调用的,写入数据的方法是动态方法,无法使用,记录下解决方案,希望能帮助需要的朋友。2、解决方案2.1 简单介绍简单说就是用使用jdk提供的@PostConstruct这个标签来实现,先介绍下@PostConstruct这个神奇的标签。Java中该注解的说明:@Post
沙雕Java端口进程 1、问题描述idea非正常关闭了,重启idea后,启动项目,发现一直报端口被占用,一般情况下通过在资源管理中,杀掉java.exe,重启idea就好了,但是也有例外,关闭idea,杀掉所有java.exe还是不行,只好通过netstat进行处理了。2、解决方案软件老王项目启动的端口为:10010(1)查询端口对应的进程 netstat -ano | findstr 10010(2)根据(1)查询到的pid,cmd中最后面哪一个,执行: taskkill -pid 42872 -f 如下图
Mybatis Log不打印日志 1、问题描述mybasits log plugin是调试sql非常好的工具,可以将mybits赋值后,运行的sql打印到控制台,对于开发过程具有很好的帮助效果,以前介绍过,就不再累赘了,但是默认情况下是没有日志打印的,需要配置下。2、解决方案配置下日志输出:(mybatis-plus版本/mybatis版本)就可以了,在配置文件*.yml中配置下。mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdou
再议分页插件PageHelper 1、问题描述java分页以前介绍过pagehelper,最近项目中又用到分页,看了下,发现使用springboot下使用起来更加方便了,又系统看了看,分享下,希望能帮到有需要的朋友。2、解决方案2.1 官方文档还是那句话,官方文档才是yyds,地址:https://github.com/pagehelper第一个mybatis-pagehelper是源码实现,第二个springboot的是对第一个做了封装。目前springboot下最新的pagehelper版本是:1.3.12.2 具体配
微信分享(JS-SDK权限签名算法)-Java实现 1、问题描述公众号中的H5有个业务场景,要分享页面给好友,但是因为是在微信中分享,分享的链接微信是不认的,需要首先使用签名认证,认证后才能分享,按照微信官网api,首先需要获取token,然后再根据token获取jsapiticket,然后再将随机数、时间戳、url等按照keyvalue排序加密去认证,java后端实现了下,分享下代码,给需要的朋友。2、解决方案2.1 官方文档官方文档才是yyds,首先查看微信开发者文档(https://developers.weixin.qq.com/doc/of
java反射-变量键值对排序 1、问题描述因为要做API接口安全设计方案(已实现)(https://ruanjianlaowang.blog.csdn.net/article/details/118806853 ),牵扯到前后端加密签名,从前端获取json数据后,首先需要对json数据按照首字母进行排序,再按照key1value1key2value2进行加密(json数据从前端到后端,顺序会乱),结合网上的方案,使用java的反射机制,对键值对按照首字母排序加密。2、解决方案2.1 方案(1)使用@RequestBody将jso
API接口安全设计方案(已实现) 1、背景网络安全方案,主要从数据加密与api接口安全两个方面考虑,数据加密https已经加密了,就不再次加密了;主要从api安全方面考虑。2、接口安全设计在代码层面,对接口进行安全设计一、使用token进行用户身份认证二、使用sign防止传入参数被篡改三、用时间戳防止暴力请求一、使用token进行用户身份认证用户身份认证的流程图如下:具体说明如下:1、 用户登录时,客户端请求接口,传入用户名和密文的密码2、 后台服务对用户身份进行验证。若验证失败,则返回错误结果;若验证通过,则生成一
java枚举转json 1、背景java后端的枚举类型,要展示到前端,提供给用户进行下拉选择,java后端需要封装enum为json字符串提供给前端,需要首先将枚举类型转为list,然后再转为json字符串。2、方案方案也很简单,使用EnumSet.allOf(TestEnum.class),将数据获取到再塞到list中就可以了。代码如下:import com.alibaba.fastjson.JSONObject;import java.util.ArrayList;import java.util.EnumSet