Spring Boot (十三): Spring Boot 小技巧
一些 Spring Boot 小技巧、小知识点
初始化数据
我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用 Jpa,另外一种是 Spring JDBC 。两种方式各有区别下面来详细介绍。
使用 Jpa
在使用spring boot jpa
的情况下设置spring.jpa.hibernate.ddl-auto
的属性设置为 create
or create-drop
的时候,Spring Boot 启动时默认会扫描 classpath 下面(项目中一般是 resources 目录)是否有import.sql
,如果有机会执行import.sql
脚本。
**使用 Spring JDBC **
使用 Spring JDBC 需要在配置文件中添加以下配置
spring:
datasource:
schema: database/data.sql
sql-script-encoding: utf-8
jpa:
hibernate:
ddl-auto: none
- schema :设置脚本的路径
- sql-script-encoding:设置脚本的编码
Spring Boot 项目启动的时候会自动执行脚本。
ddl-auto 四个值的解释
- create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
- create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
- update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
- validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
5、 none : 什么都不做。
不同点
第一种方式启动的时候 Jpa 会自动创建表,import.sql 只负责创建表单后的初始化数据。第二种方式启动的时候不会创建表,需要在初始化脚本中判断表是否存在,再初始化脚本的步骤。
在生产中,这两种模式都建议慎用!
Thymeleaf 设置不校验 html 标签
默认配置下,Thymeleaf 对 .html 的内容要求很严格,比如<meta charset="UTF-8" />
,如果少封闭符号/
,就会报错而转到错误页。也比如你在使用 Vue.js 这样的库,然后有<div v-cloak></div>
这样的 html 代码,也会被 Thymeleaf 认为不符合要求而抛出错误。
通过设置 Thymeleaf 模板可以解决这个问题,下面是具体的配置:
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5
LEGACYHTML5 需要搭配一个额外的库 NekoHTML 才可用,项目中使用的构建工具是 Maven 添加如下的依赖即可完成:
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
文章内容已经升级到 Spring Boot 2.x
参考:
Spring Boot (十三): Spring Boot 小技巧的更多相关文章
- springboot(十三):springboot小技巧
一些springboot小技巧.小知识点 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JDBC.两种方式各有区别下面 ...
- SpringBoot(十三):springboot 小技巧
原文出处: 纯洁的微笑 一些springboot小技巧.小知识点. 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JD ...
- spring的PathVariable和value={}小技巧(shiro项目中来的三)
<property name="successUrl" value="/main/index" /> @RequestMapping(value=& ...
- Spring学习(十三)-----Spring 表达式语言(Spring EL)
本篇讲述了Spring Expression Language —— 即Spring3中功能丰富强大的表达式语言,简称SpEL.SpEL是类似于OGNL和JSF EL的表达式语言,能够在运行时构建复杂 ...
- Spring学习十三----------Spring AOP的基本概念
© 版权声明:本文为博主原创文章,转载请注明出处 什么是AOP -面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 -主要的功能是:日志记录.性能统计.安全控制.事务处理. ...
- Intellij IDEA神器那些让人爱不释手的小技巧
完整的IDEA使用教程,GitHub地址: https://github.com/judasn/IntelliJ-IDEA-Tutorial 概述 之前写了一篇介绍IntellIJ IDEA的文章 ...
- Spring Boot(十三):spring boot小技巧
Spring Boot(十三):spring boot小技巧 一.初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JDB ...
- (转)Spring Boot (十三): Spring Boot 小技巧
http://www.ityouknow.com/springboot/2017/06/22/spring-boot-tips.html 一些 Spring Boot 小技巧.小知识点 初始化数据 我 ...
- spring boot(十三)小技巧
一些springboot小技巧.小知识点 初始化数据 我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用Jpa,另外一种是Spring JDBC.两种方式各有区别下面 ...
随机推荐
- 【python】python常用函数
urlencode与urldecode 当url中包含中文或者参数包含中文,需要对中文或者特殊字符(/.&)做编码转换. urlencode的本质:把字符串转为gbk编码,再把\x替换成%.如 ...
- 看jQuery的这几天
现在在做SPA时,有很多非常好用而且流行的前端框架,比如Vue,React,Angular等,jQuery似乎要逐渐退出前端的舞台了.不得不说,'write less,do more' 这句话吸引了我 ...
- [SQLSERVER] [RESTORE] 逐步恢复日志备份并使用只读模式查看
执行: USE master GO RESTORE DATABASE MYDB FROM DISK = N'FULL_BACKUP.bak' WITH REPLACE, STANDBY = N'STA ...
- WebStorm 中 dva 项目用 start 命令需要不断重启项目问题
问题: 用dva-cli 构建的项目,用webstorm进行开发,通过 npm start进行启动,经常修改了文件之后,浏览器里面的内容没有刷新,需要重新执行npm start才行. 解决办法: we ...
- 安全之路 —— 利用SVCHost.exe系统服务实现后门自启动
简介 在Windows系统中有一个系统服务控制器,叫做SVCHost.exe,它可以用来管理系统的多组服务.它与普通的服务控制不同的是它采用dll导出的ServiceMain主函数实现服务运行,详细原 ...
- Symbol Tables
符号表 符号表是键值对的集合,支持给定键查找值的操作,有很多应用: API put() 和 get() 是最基础的两个操作,为了保证代码的一致性,简洁性和实用性,先说下具体实现中的几个设计选择. 泛型 ...
- Springboot连接MySQL8.0出现的问题
以前用的是5.7版本的MySQL,在学习实践Springboot的时候顺带升级了一下8.0,遇到了一些坑,在这记录一下,有碰到同类问题的童鞋需要自取. 使用 navicat连接发现报错1251- Cl ...
- 【Ansible 文档】【译文】配置文件
这里说明一下配置文件的内容,原文地址:http://docs.ansible.com/ansible/latest/intro_configuration.html 这个与[Ansible 文档]配置 ...
- tcp付金卡黛珊李方军拉萨
进口量点卷啊首付款拉德斯基疯狂拉萨的
- 【转】 最新版chrome谷歌浏览器Ajax跨域调试问题
Ajax本身是不支持跨域的,而我们在开发工作中,可能会遇到本地开发环境未配置相关代码,需要到其他服务器上获取数据的情况,尤其在用HTML5开发app的过程中,前后台完全分离,使用Ajax进行数据交互, ...