分类 java 中的文章

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 这个方……

阅读全文

Electron 集成 Vue & Vuetify 开发应用

Electron 集成 Vue & Vuetify 开发应用 由于electron能够用 Nodejs 编写跨平台系统的应用软件,目标系统包括 windows、MacOs、Linux 这三大主流操作系统,因此能够省去大量的跨端开发工作。更因为能够重用 Vue 组件,因此可以编写出与 WEB 端媲美的漂亮界面,而且组件的重用更是大大的提高了开发的效率。 VS code……

阅读全文

使用 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> </dependency> 首次尝试 不过 SpringBoot 的启动类的 main 方法需要做一些改变 package com.sample.api; import……

阅读全文

使用 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 下的 Mapper.xml 文件进行编译,即在 target/classes 下无法找到对应的 Mapper.xml 文件,因此请将 mvn 的 pom.xml 增加如下内容 <build> <resources>……

阅读全文

整合 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 # 使用命令行形式启动控……

阅读全文