Spring Boot实战
文章平均质量分 75
立足于Spring Boot的实践经验
bladestone
15年的软件行业开发经验,9年项目管理经验;5年爬虫经验
展开
-
Spring Boot中单元测试数据库的切换策略
问题缘起单元测试默认情况下使用嵌入式数据库,例如H2。如果要切换为MySQL,直接移除H2驱动,在application.properties(yml)配置相应的连接信息,都不起作用。那该如何切换配置呢?单元测试数据库在SpringBoot的单元测试中,默认使用嵌入数据库,例如H2,HSQLDB等.默认情况下无需指定具体的嵌入数据库类型,只需要在pom.xml文件中加入相应的数据库驱动即可,示例如下:<dependencies> <!-- 略去其余依赖 ---&g原创 2020-06-18 08:48:07 · 4032 阅读 · 0 评论 -
JDK 8 Stream List转换为Map的duplicate Key异常
Stream List to MapStream提供了List转换为Map提供了非常易用的方法:Collectors.java:public static <T, K, U> Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ?原创 2020-05-25 09:48:16 · 2768 阅读 · 0 评论 -
Spring MVC Controller传递枚举值示例
功能描述本文将通过一个小示例,展示在请求参数中传递枚举值。枚举定义角色类定义:public enum RoleEnum { EMPLOYEE((short)1, "Employee"), MANAGER((short)2, "Manager"); private Short value; private String desc; private RoleEnum(Short value, String desc) { this.value = value; this.desc原创 2020-05-14 11:25:21 · 6005 阅读 · 0 评论 -
Java Generic Method设置类型
问题提出在JUnit中编写单元测试之时,发现如下问题:assertThat其定义如下: public static <T> void assertThat(T actual, Matcher<? super T> matcher) { assertThat("", actual, matcher); }解决修改策略:Assert.<java.lang.String>assertThat(vehicleTeamMemberResDto.原创 2020-05-12 11:45:40 · 564 阅读 · 0 评论 -
@WebMVCTest中的404问题分析
问题分析在创建单元测试Controller过程中,碰到了一个问题,具体如下:MockHttpServletResponse: Status = 404 Error message = null Headers = {} Content type = null Body = Forwarded URL...原创 2020-05-02 17:57:55 · 2290 阅读 · 0 评论 -
Spring UnitTest Http Status 401问题解决
问题提出在编写单元测试过程中,碰到如下问题:MockHttpServletResponse: Status = 401 Error message = Full authentication is required to access this resource Headers = {WWW-Authenticate=[Basic realm=...原创 2020-04-30 22:28:35 · 1462 阅读 · 0 评论 -
Spring Async使用以及ThreadPoolTaskScheduler not initialized问题分析
引言在系统中,对于耗时比较多的操作,一般都会使用异步操作,或者单独开一个线程进行处理。在Spring中,直接内置了@Async帮助大家一步到位,简化使用,本文分析其中的一个问题。代码代码最直观,直接上代码: @Slf4j@Configuration@EnableAsyncpublic class AsyncConfig implements AsyncConfigurer { ...原创 2019-11-14 09:33:52 · 8968 阅读 · 1 评论 -
Java程序命令行参数总结
前言: 在命令行中输入可以输入各类参数,本文将针对这些参数做一个小结。基于命令行输入参数测试程序如下:import java.util.Arrays;public class Main { public static void main(String[] args) { System.out.println("System Property, abc:" + System.get...原创 2019-11-11 23:15:05 · 3151 阅读 · 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 评论 -
Mockito verify验证Action的使用小结
单元测试中的Action在单元测试中,某些特定的情况下,是有需要验证某些动作是否被执行的情况,则此时可以考虑使用verify()来验证某个动作是否被执行。verify()来自mockit类库,用来验证特定的action是否被调用。使用示例:public class VerifyActionTest { @Test public void testVerify() { ...原创 2019-03-28 21:11:38 · 5106 阅读 · 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 评论 -
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 评论 -
Spring Boot单元测试之服务层测试总结
引言书接上回,上回介绍了基于Controller层的测试用例,本节将介绍基于服务层的测试用例用法。基于Controller层文章,请参阅: Spring Boot之单元测试用例基于Service服务层的单元测试服务层主要定义各类的业务逻辑,调用DAO层的各类数据服务,完成相应的业务操作。定义服务的示例:@Service@Slf4jpublic class GameService {...原创 2019-03-27 18:45:30 · 3291 阅读 · 1 评论 -
Spring Boot之单元测试用例总结
关于单元测试单元测试其核心诉求是将一个复杂的程序进行拆解,分解为若干个独立的可控子模块来实现测试的可控性。在本节将对Spring Boot中可用的单元测试注解以及用法做一个小结。通用注解@RunWith(SpringRunner.class/SpringJUnit4ClassRunner.class)使用在测试用例类之上,用来表示当前测试用例需要使用Spring Bean容器进行运行。...原创 2019-03-27 16:45:53 · 3952 阅读 · 0 评论 -
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之Validation自定义实现总结
Spring Boot Validation定制虽然在Spring Boot中已经提供了非常多的预置注解,用以解决在日常开发工作中的各类内容,但是在特定情况仍然存在某些场景,无法满足需求,需要自行定义相关的validator。本节将针对自定义的validator进行介绍。自定义的注解这里的场景设置为进行IP地址的验证,通过注解的方式,让用户使用验证规则。注解定义如下:@Target({El...原创 2019-03-26 12:38:48 · 13393 阅读 · 1 评论 -
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之输入Bean验证@Valid应用场景总结
Validation应用场景在日常应用中,存在大量需要针对输入数据进行验证的应用场景,例如字符串的大小,ip地址验证,email格式验证等等各类情况。值得开心的是Spring Boot将这类场景进行了集成抽象,提供一个完整而且灵活的机制简化开发者在进行相关操作时的重复工作量。Maven引用在pom文件中添加如下信息: <dependency> ...原创 2019-03-25 22:07:33 · 5432 阅读 · 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 Boot下Profile的四种切换方式思路总结
Profile多环境下Profile在实际项目发布流程中,往往会涉及到多个环境下各类配置的切换。在Spring Boot中提供了多种机制允许开发者进行自行的定制和设置。profile是用来描述某个环境下的配置信息的总称,包括:数据库连接,配置信息,名称等等个性化的信息。基于Maven pom文件的配置profile设置在以Maven管理的项目其核心流程与设置定在pom.xml文件中,包括...原创 2019-03-19 22:48:35 · 4332 阅读 · 0 评论 -
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 评论 -
JPA常用注解汇总纪要
文章目录注解Column详解日期类型定义枚举类型存储空间大的数据类型排除持久化字段声明注解Column详解Column的主要属性信息:name 自定义数据库的字段名称nullable 是否为空length: 如果是字符型,可以限定长度unqiue 是否为唯一性precision/scale 对于小数的精度控制insertable/updatable 可插...原创 2019-03-07 08:31:58 · 1234 阅读 · 0 评论 -
Spring MVC之redirect、forward和普通跳转
文章目录Spring MVC之Controller的view跳转redirectforward总结Spring MVC之Controller的view跳转在Spring MVC中,通过返回一个view url地址的方式,将特定位置的html渲染之后推送到请求的client端。例如: @Controller public class A{ @RequestMapp...原创 2019-02-26 14:53:11 · 5320 阅读 · 0 评论 -
@PostContruct in Spring的依赖类
PostContruct/PreDestory功能描述@PostConstruct用以标注方法,表示方法将在对象构建成功之后,被调用。@PreDestory 用以标注方法, 表示方法将在对象被销毁之前,被调用。应用场景@PostContruct: 主要用来在初始化操作,例如加载配置文件,初始化连接等@PreDestory: 主要用来在释放资源,比如,释放资源,释放链接,清空内存使用等...原创 2019-02-12 14:51:18 · 1695 阅读 · 1 评论 -
JUnit 4使用小结
JUnitJUnit是Java开发中必备的单元测试工具,目前手里使用的JUnit 4.Hamcresthamcrest使用的断言功能,maven依赖定义如下: <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamc...原创 2018-08-30 15:13:39 · 434 阅读 · 0 评论 -
Maven之Spring BOM(Bill of Materials)
问题提出在Maven项目中,如果需要依赖第三方的包,比如Spring。不同的第三方依赖包可以直接或者间接依赖于Spring,这些Spring的版本各有不同,则在项目中产生的版本的冲突。 BOM价值BOM是由Maven提供的功能,用以统一间接或者直接依赖的类库版本,强制某个类库使用某一个统一的版本。使用示例在Maven的pom.xml中,使用如下:<dependen...原创 2018-07-12 10:38:31 · 4886 阅读 · 0 评论 -
Thymeleaf与Spring学习笔记
ModelAttribute在与Spring的集成中,在html页面中基于thymeleaf语法,直接访问model中的属性信息。 在Controller中定义ModelAttribute信息:@ModelAttribute('allTypes')public List<Type> populateTypes() { return Arrays.asList(T...原创 2018-07-11 14:43:31 · 903 阅读 · 0 评论 -
Thymeleaf学习笔记(四)
th:blockthymeleaf中唯一的执行逻辑控制的节点,执行完毕之后,自行消失,用来做控制,而非显示。 示例:&amp;lt;table&amp;gt; &amp;lt;th:block th:each=&quot;user : ${users}&quot;&amp;gt; &amp;lt;tr&amp;gt; &am原创 2018-07-11 11:39:39 · 415 阅读 · 0 评论 -
Thymeleaf学习笔记(三)
Layout布局1 定义fragment 语法: th:fragement 示例:&lt;!DOCTYPE html&gt;&lt;html xmlns:th="http://www.thymeleaf.org"&gt; &lt;body&gt; &lt;div th:fragment="copy&qu原创 2018-07-10 19:52:14 · 276 阅读 · 0 评论 -
Thymeleaf学习笔记(二)
缺省的Conversion语法: ${{variable}} 含义: 默认调用转换函数,将其转换为string 示例:&lt;td th:text="${{user.lastAccessDate}}"&gt;...&lt;/td&gt;Preprocessing预处理语法: ${#{artical.text{‘txtvar’)}} 含义: 在预处理阶段,替换为对应的m...原创 2018-07-10 19:38:31 · 539 阅读 · 0 评论 -
Thymeleaf快速学习笔记(一)
基础语法简单的表达式 Variable Expressions: ${…} Selection Variable Expressions: *{…} Message Expressions: #{…} Link URL Expressions: @{…} Fragment Expressions: ~{…}Text操作String concatenation: + Lite...原创 2018-07-10 18:51:42 · 608 阅读 · 0 评论 -
Http请求中Content-Type讲解以及在Spring MVC中的应用
引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在Spring MVC中如何使用它们来映射请求信息。原创 2015-04-22 16:01:48 · 394130 阅读 · 18 评论 -
Spring中的@Transactional深度分析之二
接着上次文字的内容,继续深入讲解isolation,timeout,readOnly之类的用法。原创 2015-03-27 23:31:57 · 8081 阅读 · 0 评论 -
Spring中@Transactional用法深度分析之一
引言: 在Spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单使用,并未深入了解,其各个配置项的使用方法,本文将深入讲解各个配置项的使用。原创 2015-03-27 22:40:46 · 151423 阅读 · 7 评论 -
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: table is not Mapped问题解决
引言: 在基于SpringData/JPA来快速开发若干功能过程中,碰到了table is not Mapped问题,经过一番辛苦的调试测试之后,才发现了一个@Entity的属性name的妙用。原创 2015-02-04 14:28:34 · 46681 阅读 · 3 评论 -
基于Maven在Spring中集成CXF Web Service框架
引言: 在跨系统和跨平台的系统通信中,WebService是一个事实上的标准,其以平台无关性,获得了广泛的应用。本文将讲述如何基于Spring来集成CXF,并开发出第一个Hello World的应用。原创 2015-01-21 18:21:59 · 44796 阅读 · 3 评论 -
解决SpringIDE中无法出现SVN
SpringIDE 版本: spring source tool 2.8.1, Eclipse 3.7(Dingo)问题表现: 没有svn的选项,经过检查,已经安装了svn的subclipse plugin,版本1.6解决: 删除1.6的版本,安装1.8, 即可正确解决。原创 2011-12-17 20:45:03 · 967 阅读 · 0 评论 -
Junit 4 guidance
JUnit 4简化了testcase的开发过程,相比JUnit3主要的简化操作如下:* 无须引入TestCase* 无须继承 testcase* 无须声明被测试方法以testXXX 开头。* 无须assertTrue,etc等方法来判断结果的正确与否。JUnit 4需要作的事情如下:* 引入Test* 被测试的方法需要以@Test开头* 通过assert*方法来判断结果* @Before/@After在类的初始化和清扫阶段。* @BeforeClass/@AfterClass 在@Test之前之后执行原创 2011-05-09 12:16:00 · 764 阅读 · 0 评论 -
基于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 评论 -
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 评论