- 博客(133)
- 收藏
- 关注
原创 怎样下载PDF版的Spring文档
进入spring官网,首页如下图:将鼠标指向顶部导航栏中的 ‘Projects’ 选项,如下图:在弹出的菜单中选择 ‘Spring Framework’,如下图:点击 ‘LEARN’,如下图:选一个版本,点击 ‘Reference Doc’,如下图:此时就找到了 spring framework 5.2.8 版本的文档,该文档的地址是https://docs.spring.io/spring/docs/current/spring-framework-reference/,如下图:.
2020-08-09 10:45:16
56
原创 策略模式(二)
再次学习一下策略模式,加深理解,这个老外讲的非常好(个人意见)/** * 策略的调用者 客户端 * * @author qsm * @date 2020/05/26 21:14 */public abstract class Duck { private IFlyBehavior flyBehavior; private IQuackBehavior quackBehavior; private IDisplayBehavior displayBehavior;
2020-05-28 23:32:25
188
原创 原生feign的使用之一(post请求 + body)
注意:本文讲的是原生feign,不是结合spring使用feign场景描述在开发的时候遇到一个问题:由于种种原因,需要使用原生feign发起一个post请求,请求体是json格式。解决方案见 https://github.com/OpenFeign/feign 的 readme 中 Encoders 部分测试先启一个服务,代码很简单 @PostMapping(value = "/address/create") @ResponseBody public St
2020-05-28 21:12:46
1285
原创 builder模式
比较简单,看个例子:package com.qs.mmeng.design.pattern.builder;import lombok.ToString;/** * tutorial * * @author qs * @date 2018/09/10 */@ToStringpublic class Student { private Integer id; priv...
2020-03-19 22:58:34
49
原创 MySql中的DATETIME类型和TIMESTAMP类型
DATETIME类型是为了存储既包含’日期’又包含’时间’的值。MySql以YYYY-MM-DD HH:MM:SS的格式来提取和显示DATETIME类型的值。DATETIME类型支持的范围是1000-01-01 00:00:00到9999-12-31 23:59:59。TIMESTAMP类型是为了存储既包含’日期’又包含’时间’的值。TIMESTAMP类型支持的范围是1970-01-01 00...
2020-03-07 15:28:08
89
原创 解决angular项目在IE10、IE11上运行,表单组件在输入之前就校验的问题
问题描述在IE10和IE11中,表单中还没有输入任何内容,校验信息就显示出来了。现象举例问题原因及解决办法这个问题在GitHub上已经讨论的很火了,原因也说的很明白了,并且angular团队也给出了解决办法。相关链接: issue-14440。终极解决办法:UniqueInputEventPlugin...
2020-03-04 21:33:44
498
2
原创 validation-api中@GroupSequence的使用
考虑一种场景:一个bean有3个属性(假如说是attrA、attrB、attrC)需要做校验。默认情况下,validation-api对这3个属性的校验顺序是随机的。也就是说,可能先校验attrA,再校验attrB,最后校验attrC,也有可能先校验attrB,再校验attrC,最后校验attrA。那么,如果我们的需求是先校验attrA,再校验attrC,最后校验attrB。validation...
2020-03-04 21:06:42
456
原创 angular项目报Module not found错误的一种可能原因
原因:在进行import的时候,使用的是webstorm这种IDE导入的,导致导入文件的路径太过精确实例:上图是我用webstorm的自动导入功能引入的,结果报了如下错误:修改以后就好了:...
2020-03-03 16:35:41
300
原创 Spring 中的数据校验
在做web项目的时候,经常会数据校验的情况,比如,用户通过表单提交向后台发送一个对象,后台往往需要校验用户输入是否合法,校验通过的时候将该表单数据入库。这里的校验又分为2种类:第一种是类似于非空校验、长度校验、最大最小值校验这种,这种校验通过前端JS也是可以做的,但是为了程序的健壮性,后台接口往往也会做这种校验,这样的校验使用hibernate validator最合适不过了;第二种校验稍微复杂一...
2019-08-29 23:43:03
75
原创 解决sourcetree特别卡的问题
问题原因:sourcetree 会读取 package-lock.json 文件,而这个文件又很大(不知道怎么搞的,即使将package-lock.json配置在.gitignore中,sourcetree还是会读取这个文件)!解决办法:在 sourcetree 的配置中,忽略 package-lock.json 文件配置如下:效果如下:...
2019-08-12 11:25:19
6891
原创 MyBatis中默认的别名有哪些
mybatis中默认的别名都在TypeAliasRegistry这个类中定义着:public class TypeAliasRegistry { private final Map<String, Class<?>> TYPE_ALIASES = new HashMap<String, Class<?>>(); public TypeA...
2019-04-24 10:12:22
769
原创 Hibernate Validator 6.0.7.Final 之六(自定义枚举类型的约束)
在对bean的属性进行校验的时候,经常会碰到下面这种情况:假设有这样一个属性,名为attr,我们需要它的可取值固定在一个枚举中。举个例子:被校验的bean名为People,People中有一个String类型的属性sex,我们要求该属性的取值只能是"male"和"female"。这种校验并不复杂,直接看代码好了。被校验的属性 /** * 合伙人类型: 1-企业 2-个人...
2019-02-14 15:43:33
192
原创 自定义mybatis generator的注释生成器
用过mybatis generator的同学应该都知道它生成的bean大概是下面这个样子(如果配置文件中开启了生成注释选项的话):从中可以看出,默认生成的bean中的注释并不友好,那么,我们有没有办法自定义这些注释呢,答案是肯定的。具体的做法就是自己定义一个注释生成器。怎么自定义注释生成器呢?方法有2种:第一种是实现mybatis generator提供的CommentGenerator接...
2019-01-23 17:19:23
519
1
原创 zuul异常处理
注意,关于怎样在zuul中处理异常,网上有很多方法,本文只讲述其中的一种。首先,我们要知道以下几点:zuul中有一个默认的处理异常的filter,名为 SendErrorFilter,这个过滤器实际所做的工作只是将异常处理转发到了 ‘/error’ 这个路径上承接上一点,在springboot中,有一个默认的处理异常的controller,名为 BasicErrorControlle...
2019-01-16 13:14:59
3363
2
原创 Hibernate Validator 6.0.7 Final 之五(@GroupSequenceProvider的使用)
Hibernate Validator 提供了"根据对象状态动态重定义默认分组"的接口。什么意思呢?考虑下面这个场景:假如一个bean有3个属性,分别是attrA, attrB和attrC。当attrA属性的值是value1,我们需要对attrB进行校验;当attrA属性的值是value2的时候,我们需要对attrC进行校验。为了实现上面这个目的,我们需要实现DefaultGroupSeque...
2018-12-20 19:26:01
1444
原创 Hibernate Validator 6.0.7 Final 之五(分组的继承)
在Hibernate Validator 6.0.7 Final 之五(初识分组校验)中,我们对分组有了初步认识。同时,在最后的测试中,我们看到,如果想对某分组进行校验,我们需要明确将该分组列出来。那么,如果我们需要在校验A分组的时候,同时将B分组包含进来,也就是说,在校验的时候,虽然我们只是指定了A分组,但是A分组和B分组上的约束都生效了。这个问题就是本文要讲解的–分组的继承。下面通过一个例子来...
2018-12-16 13:04:39
270
2
原创 Hibernate Validator 6.0.7 Final 之五(初识分组校验)
首先,解释一下什么是分组校验?所谓分组,就是允许我们在校验过程中指定使用哪些约束。比如说:一个被校验的bean有10个属性。在某次校验中,我们只想校验前5个属性,后5个属性不想校验(也就是说,定义在前五个属性上的约束生效,而定义在后五个属性上的约束不生效);在另一次校验中,我们只想校验后5个属性,而不想校验前五个属性。要实现这个目标,我们可以对属性进行分组,然后在实际校验的时候明确指定我们要校验哪...
2018-12-16 12:24:16
670
原创 统一社会信用代码的校验
相关链接:统一社会信用代码编码规则public static boolean isValidUnifiedSocialCreditIdentifier(String unifiedSocialCreditIdentifier) { // 代码字符集,不含 I O S V Z,共30位 String codes = "0123456789ABCDEFGHJKLMNPQRTUWXY...
2018-12-07 20:25:38
3986
1
原创 Java8中Map接口的getOrDefault方法
今天在查看org.springframework.core.io.support.SpringFactoriesLoader的源码的时候,看到了下面这个地方:无意中发现了上图中的getOrDefault方法,于是到对应的源码中看一看:很明显:如果map中含有指定的key,就返回该key对应的value,否则使用该方法的第二个参数作为默认值返回,下面是一个测试:@Test publ...
2018-11-26 17:23:10
3729
原创 CommandLineRunner和ApplicationRunner接口的作用
如果想要在SpringApplication启动后做一些事情,我们可以实现CommandLineRunner或者ApplicationRunner接口。这2个接口都提供了一个run方法,这个run方法会在SpringApplication.run(…)完成之前被调用。先看一下这2个接口(它们区别不大):然后看一个例子:另外,需要注意的是,我们可以同时使用多个实现了上述2个(任一)接口的b...
2018-11-24 11:08:58
1186
原创 自定义springboot项目的banner
注意:本文仅供娱乐默认情况下,spring boot项目启动的时候会打印出这样一个效果:实际上,这个效果是可以自定义的,具体怎么做,其实很简单,我们可以在classpath下面放上一个名为banner.txt的文件,里边放入想要打印出来的内容,例如:启动项目,查看打印效果:当然,还可以在classpath下面放上一个名为banner.gif或者banner.png或者banner.j...
2018-11-21 22:39:19
140
原创 怎样在普通类中使用被spring管理的bean
在使用spring做开发的时候,有时候会碰到的一个问题是----怎样在普通的类(不被spring管理、没有注入到spring容器中)中调用spring容器中的bean?因为调用方是普通类,不是被spring管理的bean,所以依赖注入是没法用了。那么,有没有解决办法呢?当然是有的。网上的教程提供了很多种方法,而本文只讲解个人认为最简单的一种----那就是利用spring提供的Applicatio...
2018-11-16 11:45:47
2090
原创 eureka 客户端连不上注册中心
如果你确认你的配置都是对的,完全没毛病,然而eureka客户端还是连接不到注册中心(但是能连到默认的注册中心 ---- http://localhost:8761/eureka 端口),那么,请看一下是不是把配置文件中的 ‘defaultZone’ 写成了 ‘default-zone’,具体原因可以自行查看源代码:如果想搞的更明白一些,可以在下面这个地方(还是上图中的那个类)打个断点看一下:...
2018-11-16 11:19:06
3655
原创 Date和LocalDateTime之间的相互转化
值得注意的是:Date类在1.8版本中添加了2个方法,以便于实现和Java8中新的日期和时间进行转换,下图是这2个方法:从上图可以看出,旧的Date和新的时间之间的桥梁是Instant。...
2018-11-16 10:40:34
1269
原创 使用logback为springboot项目做日志记录
在resources目录下新建 logback-spring.xml 文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><configuration> <!-- 存放日志文件的目录 --> <property name="LOG_HOME" value="/var/log&q
2018-08-24 12:55:01
445
原创 Hibernate Validator 6.0.7.Final 之六(自定义约束之一)
虽然说Bean Validation API和Hibernate Validator给我们提供了很多内置的约束(如:@NotNull, @Size等),但是,这些内置的约束总有不能满足业务需求的时候。此时,我们很自然就想到了自己定义约束。 在Hibernate Validator中,要实现自定义约束,需要经过下面三个步骤:创建一个约束注解实现一个校验器定义默认的错误消息 ...
2018-05-12 17:49:25
816
原创 设计模式之单例模式
饿汉模式/** * 饿汉模式 - 线程安全的(JVM保证在任何线程访问uniqueInstance静态变量之前,一定先创建此实例。) */public class Singleton { // JVM在加载这个类的时候马上创建此类的唯一实例 private static Singleton uniqueInstance = new Singleton(); ...
2018-05-09 09:33:51
121
原创 Hibernate Validator 6.0.7.Final 之三(方法约束之级联约束)
和bean属性约束之级联约束一样,方法约束也支持级联约束。直接看例子:Car定义public class Car { @NotNull private String manufacturer; @NotNull @Size(min = 2, max = 14) private String licensePlate; publi...
2018-04-23 16:44:41
234
原创 Hibernate Validator 6.0.7.Final 之三(声明方法约束)
本文要讲解的是怎样声明方法约束。 首先,我们要明白什么是方法约束:其实就是对方法的参数和返回值进行约束,这里说的方法包括构造方法。下面这个例子就是方法约束,更准确地说,它是参数约束。public class RentalStation { // 构造方法 public RentalStation(@NotNull String name) {} // 普通方法...
2018-04-23 16:10:58
218
3
原创 Hibernate Validator 6.0.7.Final 之二(详解Validator和ConstraintViolation)
Validator接口在bean的校验中扮演非常重要的角色。本文将详细讲解该接口。获取该接口的方法ValidatorFactory factory = Validation.buildDefaultValidatorFactory();validator = factory.getValidator();该接口中的重要方法&lt;T&gt; Set&lt;Cons...
2018-04-23 12:50:28
9341
2
原创 Hibernate Validator 6.0.7.Final 之一(声明Bean约束之容器元素的约束)
首先,我们需要知道什么是容器元素–其实就是List、Set、Map等。我们也知道,使用容器元素的时候,需要指定容器能容纳的数据的类型,例如,List&lt;String&gt;就是说这个List容器可以容纳String类型,这里的String叫做参数化类型。本文要讲的就是对参数化类型约束。 需要注意的是,如果想要将一个约束应用到参数化类型上,那么这个约束的定义中的@Target中必须包含...
2018-04-22 10:24:33
215
2
原创 Hibernate Validator 6.0.7.Final 之一(声明Bean约束之级联约束)
前几篇文章讲的校验都是针对简单属性,那么,如果一个bean的属性是一个复杂对象呢,我们该怎么校验,其实也简单,只需要在这个属性上使用@Valid注解就可以了。Person的定义public class Person { @NotNull(message = "不能没有名字") @NotBlank(message = "名字不能为空字符串") private...
2018-04-22 09:10:57
283
原创 Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之二)
承接Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之一)。本文使用field级别的约束来测试一下约束的继承性。父类public class Car { @NotNull(message = "制造商不能为空") private String manufacture; @Min(value = 2, m...
2018-04-22 08:51:58
167
原创 Hibernate Validator 6.0.7.Final 之一(声明Bean约束之约束的继承性之一)
当一个类实现了某接口或者继承了某类的时候,父类型的约束将会被子类型继承。父类public class Car { private String manufacture; private int seatCount; @NotNull(message = "制造商不能为空") public String getManufacture() { ...
2018-04-22 08:32:13
172
原创 Hibernate Validator 6.0.7.Final 之一(声明Bean约束之class级别的约束)
field级别的约束和property级别的约束都是针对单个属性的,而类级别的属性则是针对整个对象的,这在一个对象的多个属性之间具有相关性的情况下是非常有用的。对于下面这个类,我们应该确保乘客的数量不能多于座位的数量,也就是属性seatCount和passengers之间具有相关性,此时,class级别的约束就有了用武之地@ValidPassengerCountpublic clas...
2018-04-21 17:49:49
165
空空如也
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝