
草根Java之路
文章平均质量分 88
happyJared
保持勤學習的心,做好寫代碼這事
展开
-
Java 类库:Lombok
前言 前阵子闲逛的时候,留意到了Lombok这个Java第三方库,后来亲自试用了一下,还真有一种相见恨晚的感觉,对于博主这样的懒人来说,这简直是太实用了。这不趁周末,赶紧把好东西写出来分享一下。Lombok引述官网介绍: Project Lombok is a java library that automatically plugs into your editor and...原创 2018-03-06 11:19:00 · 467 阅读 · 0 评论 -
Java 异常知识点思考与总结
Java 中的异常可以是方法执行过程中引发的,也可以是通过 throw 语句手动抛出的。一旦程序运行过程中发生了异常,JRE 就会试图寻找异常处理程序来处理异常,用具体的异常对象来包装该异常。Throwable 类是 Java 异常类的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,它才是一个异常对象,才可以被抛出(throw)或者捕获(catch),才能被异常处理机制...原创 2018-12-05 17:42:00 · 308 阅读 · 0 评论 -
Spring Data JPA 的时间注解:@CreatedDate 和 @LastModifiedDate
选择 Spring Data JPA 框架开发时,常用在实体和字段上的注解有@Entity、@Id、@Column等。在表设计规范中,通常建议保留的有两个字段,一个是更新时间,一个是创建时间。Spring Data JPA 提供了相应的时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。在实体类上加上注解 @EntityListeners(AuditingEntityListene...原创 2018-12-04 17:50:00 · 19432 阅读 · 0 评论 -
Spring Boot 项目参数校验的常见使用场景
可以说几乎所有的应用场景中,参数验证都在编写业务逻辑前完成,严格确保进来的数据是合法且符合要求的。Java Web 开发领域,也早有较为完善的 Bean Validation 为 Java Bean 验证定义了相应的元数据模型和 API。首先,在项目中引入 web 模块的依赖: <dependency> <groupId>org.springframework.bo...原创 2019-03-01 10:57:17 · 958 阅读 · 0 评论 -
Java 获取视频时长及截取帧截图
前言只是最近碰到有这方面的项目需求,所以简单 Mark 下本文。下面的示例是参考过他人分享的文章,之后本人再自行实践、调整和测试过的,希望对有这方面需求的人有所帮助。示例添加依赖 <dependency> <groupId>org.bytedeco</groupId> <artifa...原创 2019-03-01 10:59:24 · 5976 阅读 · 6 评论 -
基于 Spring Data JPA 聊聊悲观锁和乐观锁
举个场景:多线程、多进程应用在对数据库的同一数据进行非幂等操作时,如果没有添加相应的锁机制进行校验、判断,通常会导致数据的脏写。抛开分布式锁这种解决思路,简单的来讲,可以优先考虑从数据库层面去解决这个问题。数据库锁分为乐观锁和悲观锁,前者适合读多写少的场景,后者适合读少写多的场景。乐观锁的实现通常是采用加版本号的形式,即如果更新时版本号未发生改变,则本次操作是成功的,且当前版本号的信息也相应会发...原创 2019-03-01 17:30:24 · 1431 阅读 · 0 评论 -
如何自定义 JPA 的数据库命名策略
本次示例的项目中,定义了如下两个实体:@Data@Entitypublic class Teacher { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Column(name = "Name") private String name;...原创 2019-02-19 11:48:00 · 1421 阅读 · 0 评论 -
如何在 Jar 包外管理 Spring Boot 应用的配置文件
常见的 spring boot 应用多是打包成 jar 包运行在服务器,这包含了一系列的配置文件以及第三方的依赖,不过这也引发了常见的思考:除application.properties之外的其它配置文件变动,是否需要重新打包再重新部署?如日志配置文件、mybatis 的 xml 文件。先来看看 Spring Boot 是如何加载核心配置文件的,在org.springframework.boot...原创 2019-03-27 13:29:36 · 302 阅读 · 0 评论 -
如何优雅的设计 Spring Boot API 接口版本号
一般来说,系统上线以后,需求仍会发生变动,功能也会迭代更新。可能是接口参数发生变更,也有可能是业务逻辑需要调整,如果直接在原来的接口上进行修改,必然会影响原有服务的正常运行。常见的解决方案,是在接口路径中加入版本号用于区分,此外还可以在参数甚至 header 里带上版本号。这里以在请求路径中带上版本号为例,如:http://IP:PORT/api/v1/test ,v1 即代表的是版本号。当然了...原创 2019-03-27 13:31:54 · 4852 阅读 · 7 评论 -
让 Restful API 更加 Simpler:Spring Data Rest
背景说明Spring Data REST 作为 Spring Data 项目的子集,开发者只需使用注解 @RepositoryRestResource 标记,就可以把整个 Repository 转换为 HAL 风格的 REST 资源,目前已支持 Spring Data JPA、Spring Data MongoDB、Spring Data Neo4j等等。上手示例下面的示例,可以帮助大家快...原创 2019-04-10 17:36:04 · 215 阅读 · 0 评论 -
Spring Boot Application 监控利器: Spring Boot Actuator
前言接触和使用 Spring Boot,当然要知道 Spring Boot 的四大核心,包括:Auto Configuration(自动配置) Starter Dependency(启动依赖) Spring Boot CLI (Command-Line Interface,命令行界面) Spring Boot Actuator(监控利器)其中,Actuator 的出现,更是帮助了开...原创 2019-04-12 17:36:00 · 479 阅读 · 0 评论 -
Spring Boot 1.0 && 2.0 + JPA 多数据源配置与使用
环境说明Spring Boot 1.5.17.RELEASE 或 Spring Boot 2.1.0.RELEASE MySQL v5.6.19 PostgreSQL v10.4无特殊说明,以下所说的环境均指 Spring Boot 2.1.0.RELEASE,如果使用的是 Spring Boot 1.5.17.RELEASE 这个版本,只需要调整下面有做说明的几处地方连接配置...原创 2018-11-21 17:56:00 · 545 阅读 · 0 评论 -
Spring Boot 1.0 && 2.0 + Mybatis 多数据源配置与使用
环境说明Spring Boot 1.5.17.RELEASE 或 Spring Boot 2.1.0.RELEASE MySQL v5.6.19 PostgreSQL v10.4无特殊说明,以下所说的环境均指 Spring Boot 2.1.0.RELEASE,如果使用的是 Spring Boot 1.5.17.RELEASE 这个版本,只需要调整下面有做说明的几处地方连接配置...原创 2018-11-24 17:36:00 · 292 阅读 · 0 评论 -
面向切面的 Spring
写在前面 本文是博主在看完面向切面的Spring(《Spring实战》第4章)后的一些实践笔记。 为什么要用AOP呢?作者在书中也明确提到了,使用AOP,可以让代码逻辑更多的去关注自己本身的业务,而不用混杂和关注一些其它的东西。包括:安全,缓存,事务,日志等等。名词概念通知(Advice) 定义了切面做什么和什么时候去做。简单点来说,就是AOP执行时会调用的方法,通知除了定义...原创 2018-03-25 20:22:00 · 151 阅读 · 0 评论 -
Spring Boot 集成 Swagger 简易教程
Swagger Swagger号称是史上最流行的、最好用的API接口文档构建工具,它支持多种语言包括Java在内,本文仅关注如何使用Spring Boot来集成Swagger,更多关于Swagger的介绍可以查看以下几个链接。Swagger - 官网Swagger - GithubSpringFox SpringFox最初叫Swagger-SpringMVC,...原创 2018-06-26 15:55:00 · 2566 阅读 · 0 评论 -
实现 Java 热部署的几种解决方案
百度百科:热部署,就是应用正在运行的时候就可以升级软件,而不需要重新启动应用。spring-loaded依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifactId&g...原创 2018-03-25 18:19:00 · 16527 阅读 · 1 评论 -
记录一次迁移 wss WebSocket 的事故
今天是2018年04月21日。 过去的这一个多月里,我的工(开)作(发)任务转战回了游戏。短短的一个月里,催着输出两款h5游戏,再加上对接、联调,想想真是够辛(ku)苦(bi)的。本人负责后端,也就是服务端这块的游戏主流程输出。去年下半年,在前任大佬的带领下,做过一两款棋牌类的手游,虽然目前的运营状况不太乐观。不过好在,过去学的那点皮毛也还没丢光,所以这次写h5后端总体还算顺畅。至于怎么...原创 2018-04-22 15:25:00 · 10407 阅读 · 8 评论 -
Spring Boot 几种启动问题的解决方案
使用Spring Boot以来,遇到和解决过好几次不同的项目启动问题,大多数事故起于错误的配置和依赖。因此,本文用于汇总这些问题,以及提供相应的解决方案,帮助大家更快的定位和排除故障。1. Unregistering JMX-exposed beans on shutdown 项目中没有添加spring-boot-starter-web模块依赖,在启动 Application 运行过...原创 2018-05-02 20:30:00 · 4665 阅读 · 1 评论 -
Spring Boot 中初始化资源的几种方式
假设有这么一个需求,要求在项目启动过程中,完成线程池的初始化,加密证书加载等功能,你会怎么做?如果没想好答案,请接着往下看。今天介绍几种在Spring Boot中进行资源初始化的方式,帮助大家解决和回答这个问题。CommandLineRunner定义初始化类 MyCommandLineRunner 实现 CommandLineRunner 接口,并实现它的 run() 方法,在该方法...原创 2018-05-02 18:06:00 · 13732 阅读 · 2 评论 -
使用 Spring RestTemplate 访问 Rest 服务
RestTemplate简介Spring's central class for synchronous client-side HTTP access.It simplifies communication with HTTP servers, and enforces RESTful principles.It handles HTTP connections, leaving ap...原创 2018-05-15 11:20:00 · 904 阅读 · 2 评论 -
Java 开发人员常用的服务配置(Nginx、Tomcat、JVM、Mysql、Redis)
NginxNginx是一款由C语言编写的高性能、轻量级的HTTP和反向代理服务器,同时也是一款IMAP/POP3/SMTP服务器。nginx.conf:Nginx核心配置文件,linux下默认安装在/etc/nginx/# Nginx所用用户和组,window下不指定 user www-data; # 工作的子进程数量(通常等于CPU数量或者2倍于CPU) worke...原创 2018-06-19 11:49:00 · 515 阅读 · 0 评论 -
Spring Boot 中读取配置属性的几种方式
前言 本文介绍Spring Boot中读取配置属性的几种方式,项目示例中用到的application.yml和application.properties定义如下:@Value @Value是比较常见的注入方式,功能强大但一般可读性较差。“` java @Value(“str”) private String str; // 注入普通...原创 2018-07-13 11:41:38 · 11209 阅读 · 2 评论 -
Spring Boot 项目 Docker 化快速上手
开篇 服务部署是应用上线前的必需环节。大道至简,如何做到项目简单化、自动化甚至傻瓜式部署是考验DevOps的一大难题。从docker面世到k8s的脱颖而出,有越来越多的开源工具也在帮助开发和运维人员解决这些问题。 对于开发人员,了解和学习Docker可谓是迫在眉睫。网上有很多优秀的学习资源,当然了,本文的主角不全是docker,但也不无关系。 现在是CI时代。用过Jenkins,...原创 2018-09-04 22:12:05 · 378 阅读 · 0 评论 -
Spring Boot2 集成 Elasticsearch、PostgreSQL 遇到的问题
项目背景 在描述和还原事故之前,简单说明下相关环境:spring boot v2.0.4.RELEASEspring-boot-starter-data-elasticsearch (以前做项目的时候,Spring Data ES跟ES服务存在版本匹配关系,但目前在spring boot v2.0.4.RELEASE中使用未发现有版本不兼容情况)spring-boot-starte...原创 2018-08-30 20:23:19 · 1317 阅读 · 0 评论 -
Elasticsearch 地理坐标类型 (Geo-point) 在 Spring Data ES 中的常见使用问题整理解答
下文整理的几个问答,本人在实际应用中亲身经历或解决过的,主要涉及Elasticsearch地理坐标类型(Geo-point)在Java应用中的一些特殊使用场景,核心依赖如下: <dependency> <groupId>org.springframework.boot</groupId> ...原创 2018-09-12 23:01:10 · 11515 阅读 · 0 评论 -
为 Spring Boot 应用添加 Redis Caching
中大型应用开发中,缓存的重要性不言而喻,早期常用的进程式类的缓存,像 EhCache 或者是 ConcurrentHashMap 这样的容器,发展到如今,更流行的是那些分布式的独立缓存服务,如:Redis、Memcached。对于 Java 应用开发者来说,Spring 提供了完善的缓存抽象机制,结合 Spring Boot 的使用,可以做到非常轻松的完成缓存实现和切换。下面通过简单的示例,展...原创 2019-04-09 12:41:00 · 231 阅读 · 0 评论