
Java技术
文章平均质量分 77
bladestone
15年的软件行业开发经验,9年项目管理经验;5年爬虫经验
展开
-
Maven之java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags异常分析
问题引入在项目中,编译代码过程中出现了如下问题:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project xxx: Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags -> [原创 2021-02-07 21:10:57 · 14970 阅读 · 7 评论 -
Maven项目检查依赖包技巧总结
Maven项目依赖包在Java世界里,Maven用以管理项目的依赖包,其中存在直接依赖和间接依赖,会出现包之间的重复和多版本情况。该如何来检查其当前使用的依赖包版本信息呢?答案是: 使用mvn dependency:tree命令dependency:tree参数1: -Dverbose用法: 输出版本的详细信息,包括被覆盖忽略的版本。[INFO] | - (commons-collections:commons-collections:jar:3.1:compile - omitted原创 2020-05-27 20:26:46 · 2253 阅读 · 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 · 2865 阅读 · 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 · 6358 阅读 · 0 评论 -
Spring Async使用以及ThreadPoolTaskScheduler not initialized问题分析
引言在系统中,对于耗时比较多的操作,一般都会使用异步操作,或者单独开一个线程进行处理。在Spring中,直接内置了@Async帮助大家一步到位,简化使用,本文分析其中的一个问题。代码代码最直观,直接上代码: @Slf4j@Configuration@EnableAsyncpublic class AsyncConfig implements AsyncConfigurer { ...原创 2019-11-14 09:33:52 · 9773 阅读 · 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 · 3245 阅读 · 0 评论 -
Spring中AOP调用失效的处理方式
引言AOP在Spring以及实际项目中使用非常广泛,例如日志、数据库事务、权限校验和访问控制等等领域,其通过优雅的控制方式,优美简练地解决在项目中的开发问题。但是对于AOP实现的功能,在特定场景下仍有实效的Case,主要特征描述为: 在同一个类中,调用使用注解方式的AOP功能的方法,目标方法的注解则会失效,即无法实现预期的功能控制,例如事务、权限等。示例代码示例: @Service...原创 2019-07-25 14:11:24 · 5084 阅读 · 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 · 5174 阅读 · 1 评论 -
Spring Data之JPA/Hibernate的OneToOne示例
OneToOne场景OneToOne主要使用在存在一一对应的业务场景下,例如将一个用户信息拆分为了2个部分:基本信息和扩展信息;在这种场景下,就需要进行OneToOne的映射使用。...原创 2019-05-06 10:56:28 · 3494 阅读 · 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 · 2822 阅读 · 0 评论 -
Macos下MySQL重置密码过程分析
引言MySQL从5.7直接跳至8.0,其中发生了很多变化,本文聚焦于重置用户密码上的差异和问题解析过程。Macos下安装指南: Macos下安装MySQL简明教程Centos下安装指南:MySQL在CentOS上的安装与启动Centos下重置root密码: MySQL 5.7下重置密码问题环境: Macos重置root密码在安装完成MySQL之后,默认root密码为null,则希望重...原创 2019-04-23 10:13:24 · 1619 阅读 · 0 评论 -
Spring Boot注解补遗小结
引言常用注解@ContextConfiguration(classes=AppConfig.class) 引入applicationContext, AppConfig.class为@Configuration修饰的类用来在单元测试中引入@ApplicationContext,以及在AppConfig.java中扫描引入的类实例。@Profile(“name”)@ActivieProf...原创 2019-04-02 18:41:54 · 409 阅读 · 0 评论 -
BDDMockitto常用方法小结
BDDMockit一般都是通过以下几个步骤来实现单元测试:基于假定条件来设置,比如given()设置某些方法的值触发某些操作,比如调用方法进行结果或者调用过程的验证, then /assert操作基于上述的思路,下面通过一个示例来展示其用法。示例代码示例:@Test public void testBDD() { String name = "jack"...原创 2019-04-01 21:41:26 · 1017 阅读 · 0 评论 -
MockMvc常用指令小结
MockMvc主要用来进行Web Controller的单元测试。常用方法andExpect()responseBody()contentTypeparamandReturncontentstatus()isBadRequest()/isOk()原创 2019-04-01 14:11:59 · 4873 阅读 · 1 评论 -
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 · 2180 阅读 · 0 评论 -
Mockito verify验证Action的使用小结
单元测试中的Action在单元测试中,某些特定的情况下,是有需要验证某些动作是否被执行的情况,则此时可以考虑使用verify()来验证某个动作是否被执行。verify()来自mockit类库,用来验证特定的action是否被调用。使用示例:public class VerifyActionTest { @Test public void testVerify() { ...原创 2019-03-28 21:11:38 · 5217 阅读 · 0 评论 -
Java单元测试常用工具类小结
单元测试单元测试是系统中非常基础的功能,以功能的最小粒度进行功能测试,保证系统功能的正确行。Assert所属类库: JUnit library类名: Assert功能描述: 用以判断结果是否符合预期常用方法:assertTrue(String message, boolean condition)assertThat(String reason, T actual, Matche...原创 2019-03-28 19:26:55 · 4514 阅读 · 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 · 6628 阅读 · 0 评论 -
Spring Boot单元测试之服务层测试总结
引言书接上回,上回介绍了基于Controller层的测试用例,本节将介绍基于服务层的测试用例用法。基于Controller层文章,请参阅: Spring Boot之单元测试用例基于Service服务层的单元测试服务层主要定义各类的业务逻辑,调用DAO层的各类数据服务,完成相应的业务操作。定义服务的示例:@Service@Slf4jpublic class GameService {...原创 2019-03-27 18:45:30 · 3359 阅读 · 1 评论 -
Spring Boot之单元测试用例总结
关于单元测试单元测试其核心诉求是将一个复杂的程序进行拆解,分解为若干个独立的可控子模块来实现测试的可控性。在本节将对Spring Boot中可用的单元测试注解以及用法做一个小结。通用注解@RunWith(SpringRunner.class/SpringJUnit4ClassRunner.class)使用在测试用例类之上,用来表示当前测试用例需要使用Spring Bean容器进行运行。...原创 2019-03-27 16:45:53 · 4103 阅读 · 0 评论 -
Spring Boot 之groups应对不同的Validation规则自定义
groups如果同一个规则,在不同场景下,或许执行不同的验证逻辑,在这种情况下,该如何来处理呢?本节将基于groups字段来实现灵活的验证。这个groups是各类Validation注解中的一个属性信息,其定义如下:@Target({ElementType.FIELD})@Retention(RUNTIME)@Documented@Constraint(validatedBy = IP...原创 2019-03-26 13:13:13 · 18235 阅读 · 5 评论 -
Spring Boot之Validation自定义实现总结
Spring Boot Validation定制虽然在Spring Boot中已经提供了非常多的预置注解,用以解决在日常开发工作中的各类内容,但是在特定情况仍然存在某些场景,无法满足需求,需要自行定义相关的validator。本节将针对自定义的validator进行介绍。自定义的注解这里的场景设置为进行IP地址的验证,通过注解的方式,让用户使用验证规则。注解定义如下:@Target({El...原创 2019-03-26 12:38:48 · 13568 阅读 · 1 评论 -
Spring Boot之验证模块应用总结2
DAO的验证模块对于Entity实体来说,同样可以基于validation注解来定义相关的验证逻辑。本节将通过相关示例来介绍如何使用这些注解简化日常的开发工作。Entity定义在Maven文件中引入:<dependency> <groupId>org.springframework.boot</groupId> <ar...原创 2019-03-26 11:05:51 · 938 阅读 · 1 评论 -
Spring Boot之输入Bean验证@Valid应用场景总结
Validation应用场景在日常应用中,存在大量需要针对输入数据进行验证的应用场景,例如字符串的大小,ip地址验证,email格式验证等等各类情况。值得开心的是Spring Boot将这类场景进行了集成抽象,提供一个完整而且灵活的机制简化开发者在进行相关操作时的重复工作量。Maven引用在pom文件中添加如下信息: <dependency> ...原创 2019-03-25 22:07:33 · 5612 阅读 · 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 · 456 阅读 · 0 评论 -
Spring Boot下Profile的四种切换方式思路总结
Profile多环境下Profile在实际项目发布流程中,往往会涉及到多个环境下各类配置的切换。在Spring Boot中提供了多种机制允许开发者进行自行的定制和设置。profile是用来描述某个环境下的配置信息的总称,包括:数据库连接,配置信息,名称等等个性化的信息。基于Maven pom文件的配置profile设置在以Maven管理的项目其核心流程与设置定在pom.xml文件中,包括...原创 2019-03-19 22:48:35 · 4474 阅读 · 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 · 2450 阅读 · 0 评论 -
JPA常用注解汇总纪要
文章目录注解Column详解日期类型定义枚举类型存储空间大的数据类型排除持久化字段声明注解Column详解Column的主要属性信息:name 自定义数据库的字段名称nullable 是否为空length: 如果是字符型,可以限定长度unqiue 是否为唯一性precision/scale 对于小数的精度控制insertable/updatable 可插...原创 2019-03-07 08:31:58 · 1310 阅读 · 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 · 5580 阅读 · 0 评论 -
Maven中dependency和plugins的继承与约束
文章目录Maven的父子项目父项目配置子项目定义dependenciesdependencyManagementpluginManagement总结Maven的父子项目父子项目核心点是在于通过将一个大项目拆分为若干子模块,每个模块以子项目的形式存在,不同的子项目共享父项目的设置与约束。所以,父项目承担的角色是建立各个子项目的约束和一致的基础。父项目配置<project xmlns="...原创 2019-02-26 13:48:42 · 8307 阅读 · 0 评论 -
@PostContruct in Spring的依赖类
PostContruct/PreDestory功能描述@PostConstruct用以标注方法,表示方法将在对象构建成功之后,被调用。@PreDestory 用以标注方法, 表示方法将在对象被销毁之前,被调用。应用场景@PostContruct: 主要用来在初始化操作,例如加载配置文件,初始化连接等@PreDestory: 主要用来在释放资源,比如,释放资源,释放链接,清空内存使用等...原创 2019-02-12 14:51:18 · 1962 阅读 · 1 评论 -
Java Awersome
JVMConsole-based JVM monitoring star: 1063 uber jvm-profiler star: 386IDESTS(Spring Tool Suites) 来自spring.io社区的定制化EclipseFrameworkSpring Boot微服务框架 toolsXML L...原创 2018-08-30 15:59:32 · 549 阅读 · 0 评论 -
JUnit 4使用小结
JUnitJUnit是Java开发中必备的单元测试工具,目前手里使用的JUnit 4.Hamcresthamcrest使用的断言功能,maven依赖定义如下: <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamc...原创 2018-08-30 15:13:39 · 475 阅读 · 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 · 8972 阅读 · 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 · 5437 阅读 · 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 · 21487 阅读 · 7 评论 -
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 · 1579 阅读 · 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 · 1118 阅读 · 0 评论 -
Spring Boot之省略注入的情况总结
@AutowiredSpring提供的标注,其基于容器自动寻找和加载特定的对象。其寻找和匹配的范围包括: @Component, @Bean, @Service, @Repository, @Controller等声明的对象。使用方式@Autowired可以用在属性、方法和构造函数上。查看其定义如下:@Target({ElementType.CONSTRUCTOR, Eleme...原创 2018-07-12 18:28:30 · 2336 阅读 · 0 评论 -
Spring Boot @ConditionalOnXXX注解解析
ContiionalOnXXX在实际应用中,时常会碰到在某些情况下,才需要创建Bean或者启用某些配置。这个时候就是Conditional的应用场景自定义的conditionCondition接口定义了一个入口条件,通过返回true/false来触发其是否要执行操作: 接口定义如下:@FunctionalInterfacepublic interface Conditi...原创 2018-07-12 18:09:42 · 4957 阅读 · 0 评论