spring

分类下相关文章

Spring Boot i18n 中英双语的多语言实现方案

为了练手 Spring Boot 写了个 Emoji 查询的小网站 https://www.paobujie.com/emoji 第一版实现了英文的,后来想干脆再加上中文翻译,于是就查了一下如何使用 Spring Boot 来实现 i18n,即国际化。不得不说 Spring 相关的文档真是差劲,基本没有说明白的,都是你抄我,我抄你。涉及到实现细节,没有一个讲的完整的。踩了不少坑,虽然功能实现了,但是还是有不少疑惑。 引入阶段 在英文版完成之后,再处理 i18n 的兼容逻辑。 路由规划 (废弃) 英文 首页 /emoji/en tag /emoji/tag/en/some-tag detail ...

阅读全文...

Spring Boot I18N 中文翻译乱码问题

在设置了 messages_zh.properties 翻译之后,使用请求路径 http://localhost:9090/emoji?lang=zh 发现,中文翻译显示为乱码。 在 application.properties 中配置了 spring.messages.encoding=UTF-8 依旧显示为乱码。 于是检查 messages_zh.properties 的文件编码,果然有问题,IDEA 默认是用 latin1 编码保存 properties 文件的。 修改配置之后,再次编辑 properties 文件,将其中的乱码更正为中文,再次保存。文件编码就变成了 utf-8 ...

阅读全文...

Spring Boot 生成用于发布的 jar 包

Spring Boot 项目完成后,准备部署到生产环境服务器。如何打包呢? 方式一:命令行 mvn clean mvn package 方式二:IDEA IDE IDEA 右侧有个 Maven 菜单,点开之后,双击 Lifecyle 中的 clean 和 package. [INFO] Deleting D:\work\calf\target [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] Building jar: D ...

阅读全文...

独立设置 spring boot 生产环境配置文件

准备在生产环境部署 spring boot 服务,面临了一个问题,数据库账号密码与开发环境存在差异。又不方便直接修改 application.properties,因为来回修改无比繁琐。 spring boot 非常贴心的地方是内置了多配置文件的处理机制。不同配置文件使用不同的后缀即可。例如: 通用配置文件 application.properties 开发环境 application-dev.properties 生产环境 application-prod.properties 所以,先直接复制出一份生产环境的配置: cp application.properties applicati ...

阅读全文...

Spring Controller RequestMapping 统一访问路径的前缀

使用场景 例如,我想写一个 emoji 表情查询功能。相关的页面链接: emoji 首页 /emoji 标签分类 /emoji/tag/tag-slug 具体标签详情 /emoji/emoji-slug 特征就是都以 emoji 作为网址路径前缀。 写个简单测试 Controller 返回字符串看看效果。 @RestController @RequestMapping("/emoji") public class EmojiController { @GetMapping("") public String index() { ...

阅读全文...

IDEA 导入 Spring Boot 项目,手动配置 run configuration

从 git 仓库 clone 下来的 Spring Boot 项目,在导入 IDEA IDE 之后,无法直接 RUN。 需要手动添加一个 run/debug configuration 配置。 创建方法 顶部菜单 - Run - Edit Configuration 在弹出窗口中,点击左上角的 +,选择 Maven 选择 Spring Boot 项目所在目录,并在 Command Line 中填写 spring-boot:run 即可。 如图: 这样就可以直接点击 Run 按钮进行本地调试了。 为何不使用 spring boot 模板,而是 maven 的 因为我用的是 IDEA 的免费 ...

阅读全文...

java.sql.SQLException The server time zone value 'xxx' is unrecognized or represe

在 Windows 10 上的一个 Spring Boot 项目,连接本地 MySQL 8 数据库。 在 IDEA 中编译,报错: java.sql.SQLException: The server time zone value '???' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specif ...

阅读全文...

Spring Boot 项目中 Maven Wrapper 的作用是什么

Maven Wrapper 的作用是什么 mvnw 是 Maven Wrapper 的缩写。即每次编译启动 spring boot 的那个命令: ./mvnw spring-boot:run Maven Wrapper 的作用是在 spring boot 项目中指定 maven 版本。以统一项目组成员使用一致的 maven 版本。可以参考 maven-wrapper.properties 文件的存储内容。 maven-wrapper.properties 文件存储了什么 distributionUrl=https://repo.maven.apache.org/maven2/org/apac ...

阅读全文...

禁用 spring jpa 的自动建表配置 spring.jpa.hibernate.ddl-auto

目前在 spring 的配置文件 src/main/resources/application.properties 中,设置了 spring.jpa.hibernate.ddl-auto=update 于是,每次启动 spring boot 时,都会根据 entity 类自动建表。 但是,实际上,我并不需要这个功能,原因: 因为我还是喜欢用 MySQL Workbench 来进行建表和该表操作 线上生产环境自动执行 DDL 操作非常危险 可选值 update:自动新增不存在的数据表,和字段。不会影响数据 create:自动新建不存在的数据表;但是,同时会清空数据。。。 create- ...

阅读全文...

Spring JPA 建表不如手动建表方便

新上手 JPA,先用 Java 编写了 Entity 类,然后运行 spring boot 启动,自动创建了 MySQL 表。 虽然很简单,但是也有不便之处。 JPA 建表的弊端 字段顺序默认是字母序,而不是定义类属性的顺序。看起来很不舒服,不方便查看数据表结构。 更改字段无法自动化。估计也存在类似的 migration 的功能,但是远不如直接用 SQL 改表方便。 用 Spring 的语法来定义 Entity 确实浪费时间。即要学习,又要一行行手写。是否存在通过 MySQL 表自动生成 Entity 的工具? 是否存在通过 MySQL 表自动生成 JPA Entity 的工具? TODO ...

阅读全文...

Spring JPA 创建 MySQL 数据表的自增 ID

首先看一下大部分教程,和 Spring JPA 入门文档上的写法: 代码示例 @Data @Entity public class Article { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @NotNull private String title; } 在 MySQL 中使用 show create table 看一下自动生成的表结构: CREATE TABLE `article` ( `id` bigint NOT NULL, `title ...

阅读全文...