服务化与Spring Cloud
bladestone
15年的软件行业开发经验,9年项目管理经验;5年爬虫经验
展开
-
Spring Boot JPA Repository之诡异的existsBy查询方法失效问题
引言: Spring Boot号称微服务的利器,在结合了Spring Data与JPA之后,更是如虎添翼,开发快速的不像话,本文将讲述一个关于JPA中一个诡异问题的诊断分析过程以及修复方法。环境介绍JDK 1.8 Spring 4.2 Spring Boot 1.5.9问题描述在Spring Data中的Repository接口中创建了一个检查数据是否存在的接口方法:原创 2018-01-26 17:31:41 · 18334 阅读 · 0 评论 -
Spring Boot之输入Bean验证@Valid应用场景总结
Validation应用场景在日常应用中,存在大量需要针对输入数据进行验证的应用场景,例如字符串的大小,ip地址验证,email格式验证等等各类情况。值得开心的是Spring Boot将这类场景进行了集成抽象,提供一个完整而且灵活的机制简化开发者在进行相关操作时的重复工作量。Maven引用在pom文件中添加如下信息: <dependency> ...原创 2019-03-25 22:07:33 · 5432 阅读 · 0 评论 -
Spring Boot之验证模块应用总结2
DAO的验证模块对于Entity实体来说,同样可以基于validation注解来定义相关的验证逻辑。本节将通过相关示例来介绍如何使用这些注解简化日常的开发工作。Entity定义在Maven文件中引入:<dependency> <groupId>org.springframework.boot</groupId> <ar...原创 2019-03-26 11:05:51 · 884 阅读 · 1 评论 -
Spring Boot之Validation自定义实现总结
Spring Boot Validation定制虽然在Spring Boot中已经提供了非常多的预置注解,用以解决在日常开发工作中的各类内容,但是在特定情况仍然存在某些场景,无法满足需求,需要自行定义相关的validator。本节将针对自定义的validator进行介绍。自定义的注解这里的场景设置为进行IP地址的验证,通过注解的方式,让用户使用验证规则。注解定义如下:@Target({El...原创 2019-03-26 12:38:48 · 13393 阅读 · 1 评论 -
Spring Boot 之groups应对不同的Validation规则自定义
groups如果同一个规则,在不同场景下,或许执行不同的验证逻辑,在这种情况下,该如何来处理呢?本节将基于groups字段来实现灵活的验证。这个groups是各类Validation注解中的一个属性信息,其定义如下:@Target({ElementType.FIELD})@Retention(RUNTIME)@Documented@Constraint(validatedBy = IP...原创 2019-03-26 13:13:13 · 17485 阅读 · 5 评论 -
Spring Boot之单元测试用例总结
关于单元测试单元测试其核心诉求是将一个复杂的程序进行拆解,分解为若干个独立的可控子模块来实现测试的可控性。在本节将对Spring Boot中可用的单元测试注解以及用法做一个小结。通用注解@RunWith(SpringRunner.class/SpringJUnit4ClassRunner.class)使用在测试用例类之上,用来表示当前测试用例需要使用Spring Bean容器进行运行。...原创 2019-03-27 16:45:53 · 3952 阅读 · 0 评论 -
Spring Boot单元测试之服务层测试总结
引言书接上回,上回介绍了基于Controller层的测试用例,本节将介绍基于服务层的测试用例用法。基于Controller层文章,请参阅: Spring Boot之单元测试用例基于Service服务层的单元测试服务层主要定义各类的业务逻辑,调用DAO层的各类数据服务,完成相应的业务操作。定义服务的示例:@Service@Slf4jpublic class GameService {...原创 2019-03-27 18:45:30 · 3291 阅读 · 1 评论 -
MockMvc常用指令小结
MockMvc主要用来进行Web Controller的单元测试。常用方法andExpect()responseBody()contentTypeparamandReturncontentstatus()isBadRequest()/isOk()原创 2019-04-01 14:11:59 · 4646 阅读 · 1 评论 -
Spring Boot之DAO层的单元测试小结
DAO层dao是data access object的简写,基于Java对象访问数据库中的数据,这是应用中必备的系统模块。测试注解DataJpaTest主要用以测试DAO的业务功能DAO层的实体定义实体Bean定义如下:@Entity@Datapublic class GameEntity { @Id @GeneratedValue(strategy=Gene...原创 2019-03-28 09:32:48 · 6387 阅读 · 0 评论 -
BDDMockitto常用方法小结
BDDMockit一般都是通过以下几个步骤来实现单元测试:基于假定条件来设置,比如given()设置某些方法的值触发某些操作,比如调用方法进行结果或者调用过程的验证, then /assert操作基于上述的思路,下面通过一个示例来展示其用法。示例代码示例:@Test public void testBDD() { String name = "jack"...原创 2019-04-01 21:41:26 · 933 阅读 · 0 评论 -
Java单元测试常用工具类小结
单元测试单元测试是系统中非常基础的功能,以功能的最小粒度进行功能测试,保证系统功能的正确行。Assert所属类库: JUnit library类名: Assert功能描述: 用以判断结果是否符合预期常用方法:assertTrue(String message, boolean condition)assertThat(String reason, T actual, Matche...原创 2019-03-28 19:26:55 · 4393 阅读 · 0 评论 -
Mockito verify验证Action的使用小结
单元测试中的Action在单元测试中,某些特定的情况下,是有需要验证某些动作是否被执行的情况,则此时可以考虑使用verify()来验证某个动作是否被执行。verify()来自mockit类库,用来验证特定的action是否被调用。使用示例:public class VerifyActionTest { @Test public void testVerify() { ...原创 2019-03-28 21:11:38 · 5106 阅读 · 0 评论 -
Spring Boot单元测试之分层测试与整体测试
单元测试Case单元测试1:@RunWith(SpringRunner.class)@WebMvcTest(HelloController.class)public class HelloControllerApplicationTest { @Autowired private MockMvc mvc; @Test public void get...原创 2019-03-28 21:43:21 · 2110 阅读 · 0 评论 -
Spring Boot注解补遗小结
引言常用注解@ContextConfiguration(classes=AppConfig.class) 引入applicationContext, AppConfig.class为@Configuration修饰的类用来在单元测试中引入@ApplicationContext,以及在AppConfig.java中扫描引入的类实例。@Profile(“name”)@ActivieProf...原创 2019-04-02 18:41:54 · 360 阅读 · 0 评论 -
Spring Boot之@Transactional无法生效的问题分析
引言在Spring Boot中通过在pom.xml文件中的dependency来引入data-jpa的完整依赖,实现dao层的快速实现。数据库类型: MySQL应用框架: Spring Boot 2.1.4.RELEASEJDK: 8依赖引入基于data-jpa方式的依赖引入如下: <dependency> <groupId>org.sp...原创 2019-04-23 15:35:40 · 2727 阅读 · 0 评论 -
Spring Data之JPA/Hibernate的OneToOne示例
OneToOne场景OneToOne主要使用在存在一一对应的业务场景下,例如将一个用户信息拆分为了2个部分:基本信息和扩展信息;在这种场景下,就需要进行OneToOne的映射使用。...原创 2019-05-06 10:56:28 · 3339 阅读 · 0 评论 -
Spring Boot之OneToMany、ManyToOne示例分析
Spring Boot的1对多场景在实际使用场景中存在非常的1对多场景,对于这种情况,Spring Boot中提供基于JPA+Spring Data技术方案中,可以提供@OneToMany、@ManyToOne建立单项或者双向的依赖关系,简洁优雅地处理此类问题。技术方案评估基于Spring Boot框架,结合Spring Data JPA,底层使用Hibernate、Spring Data结...原创 2019-05-06 13:31:24 · 4957 阅读 · 1 评论 -
Jackson JSON包在从对象映射到Json字符串过程的循环依赖问题-分析与解决
提出问题在基于Jackson类库将对象转化为json字符串时,如果对象中存在互相依赖,则会产生无限循环的情况,具体情况如下:BuyerEntity.java@Table(name="t_buyer")@Entity@ToString(callSuper=true)@Data@EqualsAndHashCode(callSuper=false)public class BuyerEn...原创 2019-03-19 10:04:37 · 2343 阅读 · 0 评论 -
Spring AOP总结
TerminologyJoint Point: public method in Spring Managed BeanPoint cut: The actual joint point that that we have delcaredAdvice: The fucntionality we want to applyAspect: combine point cut and...原创 2019-03-25 13:50:40 · 414 阅读 · 0 评论 -
Spring之Property文件读取
配置文件的读取 在Spring应用中,会存在大量的配置文件设置,这些设置需要通过一个简便的方式被读取到系统中,被系统读取使用。配置信息定义假定把配置信息放入config.properties文件里面,其内容以键值对的方式出现,内容如下: key1=val1 name=zhangsan password=1234在Spring应用中,将如何读取配置信息呢?@Pr...原创 2019-03-13 14:55:41 · 725 阅读 · 0 评论 -
Spring Boot中JPA实现Sort排序的三种方式
引言: 在Spring Boot应用中,基于数据某个字段进行排序是一个非常常用的需求,这里将给出Sort的三种常用用法,基于分页的应用,大家可以各取所需,择机使用。环境说明Spring 4.2 Spring Boot 1.5.11 Java 8前置说明ECardEntity.java的定义:import javax.persistence.Column;import...原创 2018-05-17 19:48:35 · 106321 阅读 · 5 评论 -
Spring Boot 2.0下配置Log4j2下的错误问题分析与解决
环境介绍Spring Boot 2.0.2 Java 8任务描述由于Spring Boot 2.0 默认情况下是使用logback作为日志系统的,这里希望切换到log4j2.pom.xml内容定义这里在pom.xml新增了spring-boot中的日志组件&lt;dependency&gt; &lt;groupId&gt;org.springframewo...原创 2018-05-18 14:23:54 · 27733 阅读 · 6 评论 -
Spring Boot中Configuration problem: Cannot locate BeanDefinitionParser for element 的问题分析
环境信息Spring Boot 2.0.2 JDK 8, OS: windows 7问题的提出今天在开发中,碰到一下类似的错误信息:15:44:09.198 INFO com.jd.ai.cv.api.PubAPIApplication.logStarting@50 - Starting PubAPIApplication on ZB-PF0V10MN with PI...原创 2018-05-18 15:53:42 · 7375 阅读 · 0 评论 -
Sprig Boot下基于SQL Script初始化数据库的方法总结
环境信息Spring Boot 2.0.3, Windows 7, JPA, Spring Data, MySQL需求虽然JPA和Hibernate底层提供了强大的支持,但是在实际开发中,仍然会有需要自定义数据表和初始化数据的需求,对于这个需求,Spring Boot也提供了相应的支持,只是对于这个需求是有一定的前提条件和约束的,换句话说,这些SQL script只能在特定设置和...原创 2018-07-17 10:27:15 · 1523 阅读 · 0 评论 -
Spring Boot之RestTemplate在URL中转义字符禁止转义的问题解决
问题的提出基于resttemplate类进行文件下载,但是不幸的url地址中有特殊的转义字符,如果使用resttemplate的方法的话,其默认会进行转义。 原始字符串: http://www.xx.com/image-checker/train_mean.txt?Expires=3678172563&Signature=2FqOFfzePCjESlKMqiGc9V8C9E...原创 2018-07-04 17:56:42 · 21455 阅读 · 6 评论 -
Spring Boot @ConditionalOnXXX注解解析
ContiionalOnXXX在实际应用中,时常会碰到在某些情况下,才需要创建Bean或者启用某些配置。这个时候就是Conditional的应用场景自定义的conditionCondition接口定义了一个入口条件,通过返回true/false来触发其是否要执行操作: 接口定义如下:@FunctionalInterfacepublic interface Conditi...原创 2018-07-12 18:09:42 · 4899 阅读 · 0 评论 -
Spring Boot之省略注入的情况总结
@AutowiredSpring提供的标注,其基于容器自动寻找和加载特定的对象。其寻找和匹配的范围包括: @Component, @Bean, @Service, @Repository, @Controller等声明的对象。使用方式@Autowired可以用在属性、方法和构造函数上。查看其定义如下:@Target({ElementType.CONSTRUCTOR, Eleme...原创 2018-07-12 18:28:30 · 2286 阅读 · 0 评论 -
Spring Boo中基于规则将不同的配置信息读入不同的@Configuration Bean方法解析
Spring Boot这里使用的Spring Boot 2.0.3, 1.5.x的版本会有所不同,请查找API文档明确其中差异。分类的配置信息在Java项目中,为了灵活,总是有各类不同的配置项。在Spring Boot项目中,这些配置项都被放入了application.properties或者application.yml中去。也可以自定义各类的配置信息。这些配置信息为了简便灵活,都是...原创 2018-07-13 09:06:49 · 1068 阅读 · 0 评论 -
Spring Boot Application后台守护Daemon应用
问题的提出在系统基于Spring Boot来构建Web应用之后,其实Spring Boot对于应用的支持同样非常的好,但是在程序其中之后,则程序自动就退出了,这个是什么情况? 系统的日志如下:2018-08-10 16:38:29.525 INFO 12068 --- [ restartedMain] org.config.test.App1Application ...原创 2018-08-10 16:42:51 · 5343 阅读 · 0 评论 -
Spring Boot之application.properites的failed to convert java.lang.String to java.lang.Integer问题解决
环境描述Spring Boot 2.0.4.RELEASE 问题描述新创建了一个Spring Boot的Web应用,在pom.xml中的profile中配置了web server的端口,并在application.properties中配置了对应的port字段映射。 但是,在启动过程中,却出现了如下错误信息:***************************APP...原创 2018-08-07 14:38:28 · 20903 阅读 · 7 评论 -
基于Jackson的ObjectMapper类进行json字符串与对象之间的互相转换
问题jackson是Java开源领域声名赫赫的json字符串操作类库,与fastjson等齐名。本文将给出示例,如何来快速进行json string和对象之间的互相转换。代码示例Profile数据对象类:@Datapublic class Profile { private String id; //Flag active profile on defa...原创 2018-08-22 10:31:47 · 8930 阅读 · 0 评论 -
@PostContruct in Spring的依赖类
PostContruct/PreDestory功能描述@PostConstruct用以标注方法,表示方法将在对象构建成功之后,被调用。@PreDestory 用以标注方法, 表示方法将在对象被销毁之前,被调用。应用场景@PostContruct: 主要用来在初始化操作,例如加载配置文件,初始化连接等@PreDestory: 主要用来在释放资源,比如,释放资源,释放链接,清空内存使用等...原创 2019-02-12 14:51:18 · 1695 阅读 · 1 评论 -
JPA常用注解汇总纪要
文章目录注解Column详解日期类型定义枚举类型存储空间大的数据类型排除持久化字段声明注解Column详解Column的主要属性信息:name 自定义数据库的字段名称nullable 是否为空length: 如果是字符型,可以限定长度unqiue 是否为唯一性precision/scale 对于小数的精度控制insertable/updatable 可插...原创 2019-03-07 08:31:58 · 1234 阅读 · 0 评论 -
Spring Boot下Profile的四种切换方式思路总结
Profile多环境下Profile在实际项目发布流程中,往往会涉及到多个环境下各类配置的切换。在Spring Boot中提供了多种机制允许开发者进行自行的定制和设置。profile是用来描述某个环境下的配置信息的总称,包括:数据库连接,配置信息,名称等等个性化的信息。基于Maven pom文件的配置profile设置在以Maven管理的项目其核心流程与设置定在pom.xml文件中,包括...原创 2019-03-19 22:48:35 · 4332 阅读 · 0 评论 -
JPA EntityManager使用说明
EntityManager实体管理器。Entity状态New, 托管Managed, Detached游离, 删除Delete事务管理entityManager.getTransaction().begin();//operation in entityentityManager.getTransaction().commit();使用说明entityManager.clear...原创 2019-03-13 08:47:47 · 1819 阅读 · 0 评论 -
Spring之Config小结
Spring配置信息所有的Spring Bean信息都是定义在Config文件或者Configuration的配置类中的。例如:@Configurationpublic class AppConfig { @Bean public MyBean myBean() { return new MyBean(); }}引入配置在C...原创 2019-03-13 14:36:58 · 4074 阅读 · 0 评论 -
Spring中AOP调用失效的处理方式
引言AOP在Spring以及实际项目中使用非常广泛,例如日志、数据库事务、权限校验和访问控制等等领域,其通过优雅的控制方式,优美简练地解决在项目中的开发问题。但是对于AOP实现的功能,在特定场景下仍有实效的Case,主要特征描述为: 在同一个类中,调用使用注解方式的AOP功能的方法,目标方法的注解则会失效,即无法实现预期的功能控制,例如事务、权限等。示例代码示例: @Service...原创 2019-07-25 14:11:24 · 4951 阅读 · 0 评论