分类 java 中的文章

使用picocli开发基于springboot的命令行工具

添加 maven 依赖 当你已经创建好 springboot 应用后,将 picocli 的依赖加入到 pom.xml 中 <dependency> <groupId>info.picocli</groupId> <artifactId>picocli-spring-boot-starter</artifactId> <version>4.6.3</version> </dependency>修改 springboot 主程序 将你的 springboot 主程序修改为实现了ApplicationRunner接口,并将主程序命令定义为helper package top.yjp.testing; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import picocli.CommandLine; import top.yjp.testing.helper.cmd.DemoCommand; import javax.annotation.Resource; @SpringBootApplication(proxyBeanMethods = false) @Slf4j @CommandLine.Command( name = "helper", description = "自动……

阅读全文

SpringBoot配置JSON格式的日志输出

前言 当应用被拆分为N多个微服务时,当系统遇到问题,能够准确的查看日志就成了一个非常现实的问题。 原因是以容器方式运行的服务可能分布在不同的服务器上,至少十几个的微服务,甚至更多。同时由于也不太可能给到研发人员所有的相关服务器权限, 因此,需要一个集中的日志查看分析的系统,这个系统就是……

阅读全文

FreeMarker 数字输出中的逗号问题

FreeMarker 数字输出中的逗号问题,两种解决方案 FreeMarker 显示数字的时候,比如 ${post.postId} 文章 Id 为 9183,FreeMarker 默认显示为 9,183,在超链接的里就会报错。 解决办法有两种 方法一、 在表达式后面加 ?c ,默认不加会以,分隔 ${post.postId?c} 方法二、 直接在配置文件(application.yml)中加 number_format=0 spring: freemarker: settings: number_format: 0这个方……

阅读全文

使用 Node 运行 ES6 模块

使用 Node 运行 ES6 模块 由于 Node 的模块组织方式和 ES6 的模块组织方式不同,因此 ES6 的模块导入和导出语法在 Node 命令行程序执行下会报错 另外,某些 ES6 关键字的用法亦不兼容,因此需要使用 Babel 进行转换后执行 比如: 有个 ES6 写的 logger.js 直接上代码: const Level = { DEBUG: 1, INFO: 2, ERROR: 3, NONE: 4, }; class Logger { constructor(level) { this.level = level || Level.INFO; } } // 执行默认构造行数并打印 const……

阅读全文

非 WEB 环境下运行 SpringBootApplication

非 WEB 环境下运行 SpringBootApplication 前言 有时候一些项目并不需要提供 Web 服务,例如跑定时任务的项目等。因为启动一个 Tomcat 这样的 WEB 服务器容器也比较消耗资源,浪费内存及算力。 非 WEB 项目可以修改 maven 依赖为: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies>当然,不修改也是没有问题的,可以仍旧依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </d……

阅读全文

使用 mvn 进行 springboot 2.2.5+mybatis-plus 3.3 开发

使用 mvn 进行 springboot 2.2.5+mybatis-plus 3.3 开发 使用 https://start.spring.io 生成新项目框架 数据源配置 /resources/application.properties spring.datasource.username=root spring.datasource.password= spring.datasource.url = jdbc:mysql://127.0.0.1:3306/hotel spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver spring.datasource.type = com.zaxxer.hikari.HikariDataSource主启动文件 import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; import org.springframework.transaction.annotation.EnableTransactionManagement; @SpringBootApplication @EnableTransactionManagement @EnableCaching @MapperScan("com.localhost.mapper") public class ApiApplication { public static void main(String[] args) { SpringApplication.run(ApiApplication.class, args); } }当启动时报错如下时 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)原因是标准的 mvn 项目不会将位于 src/main/java 下的……

阅读全文

整合 spring-boot 和 mybatis-plus 进行 Api 开发

整合 spring-boot 和 mybatis-plus 进行 Api 开发 使用 idea 社区版作为开发工具,gradle 作为构建工具 主要配置: 首先使用 SpringBoot 初始化项目进行项目模版配置,选择 web ,mysql,lombok 即可 build.gradle 配置 plugins { id 'org.springframework.boot' version '2.1.6.RELEASE' id 'java' id 'war' } apply plugin: 'io.spring.dependency-management' group = 'io.github.joy.fxz' version = '0.0.2' sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' // 无需添加mybatis的依赖,防止与mybatis-plus整合的版本不一致 implementation 'com.baomidou:mybatis-plus-boot-starter:3.1.2'……

阅读全文

使用 junit 对 springboot 应用进行单元测试

使用 junit 对 springboot 应用进行单元测试 使用 springboot 2.2.5 开发 web 应用的时候,需要进行单元测试。 普通的 java 的单元测试比较简单,对于采用 REST 方式开发的微服务,则需要使用 WEB 环境进行测试。 示例代码如下: package com.sample.api; import com.sample.api.controller.TestController; import com.sample.api.entity.User; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class TestControllerTest { @Resource private TestRestTemplate restTemplate; @Test public void test(){ User user = restTemplate.getForObject("/users/abc", User.class); System.out.println(user); Assert.assertNotNull(user); Assert.assertEquals("abc", user.getUsername()); } }需要注意的是对于 SpringBoot 里……

阅读全文

使用 zip4j 处理压缩文件

使用 zip4j 处理压缩文件 通常情况下使用 java 处理 zip 文件时,有 java.util.zip 包下类可以使用。 但这些包过于基础且难于使用。 zip4j 有简单易用的 api,几乎可以完美使用于各种 ZIP 相关操作的场景中。 常用的 zip 处理场景包括: 压缩: 将文件打包存储到 zip 文件 将文件打包到 zip 文件内的特定文件夹内 解压: 将指定 zip 内所有文件解压到指定的……

阅读全文

使用 Nginx Unit 部署 JavaWebApp

使用 Nginx Unit 部署 JavaWebApp 从源码构建和安装 NginxUnit 主要参考:http://unit.nginx.org/installation/#source-code # 下载源码 git clone https://github.com/nginx/unit cd unit # 配置路径前缀 ./configurate --prefix=/apps/unit # 配置 java 模块 ./configurate java # 生成应用并安装到 /apps/unit make && make install启动和停止 NginxUnit cd /apps/unit # 查看命令行使用帮助 ./sbin/unitd --help # 使用命令……

阅读全文