springboot(十三):springboot小技巧

原创 2017年06月28日 12:24:19

一些springboot小技巧、小知识点

初始化数据

我们在做测试的时候经常需要初始化导入一些数据,如何来处理呢?会有两种选择,一种是使用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 四个值的解释

  1. create: 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
  2. create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
  3. update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
  4. validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
    5、 none : 什么都不做。

不同点

第一种方式启动的时候Jpa会自动创建表,import.sql只负责创建表单后的初始化数据。第二种方式启动的时候不会创建表,需要在初始化脚本中加班判断表是否存在,不存在创建表再初始化脚本的步骤。

在生产中,这两种模式都建议慎用!

参考:howto-database-initialization

thymeleaf 设置不校验html标签

默认配置下,thymeleaf对.html的内容要求很严格,比如,如果少最后的标签封闭符号/,就会报错而转到错误页。也比如你在使用Vue.js这样的库,然后有

这样的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>

参考:thymeleaf模板对没有结束符的HTML5标签解析出错的解决办法


作者:纯洁的微笑
出处:http://www.ityouknow.com/
版权所有,欢迎保留原文链接进行转载:)

版权声明:本文为博主原创,了解最新劲爆内容,请关注公众号。 举报

相关文章推荐

Redis探索之旅(4)- 在Linux环境下搭建单实例Redis服务实例

在前面的两篇文章 《Redis探索之旅(2)- 在Windows下搭建单实例Redis服务器 》 《Redis探索之旅(3)- 在Windows下将Redis注册成本地服务 》 已经讲述了如...

Redis探索之旅(1)- Redis初识

Redis,其实对我来说并不是一个新鲜的事务,早在几年前刚工作时就已经接触到它了,可是一直没有系统的学习和总结过,感觉对Redis的了解有点像是熟悉的陌生人一样,亦或是犹抱琵琶半遮面的韵味,所以决定对...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Redis探索之旅(2)- 在Windows下搭建单实例Redis服务器

在上一篇文章中,我们简单描述了什么是Redis及其相关特性,当然知道这些特性并不是我们的最终目的,我们的最终目的还是要知道如何去使用它解决实际开发过程中所遇到的问题,从这篇文章开始我们便开始陆续对Re...

(二)RabbitMQ消息队列-RabbitMQ消息队列架构与基本概念

没错我还是没有讲怎么安装和写一个HelloWord,不过快了,这一章我们先了解下RabbitMQ的基本概念。RabbitMQ架构说是架构其实更像是应用场景下的架构(自己画的有点丑,勿嫌弃)从图中可以看...

哪种Map遍历方法更优?!—Map遍历方法的正确选择

我们都知道遍历Map一般有3种方法,values(),keySet()和entrySet(),常见的是keySet用的多,简单容易理解,entrySet()是返回Map中的静态内部类Entry类类型的...

Redis探索之旅(12)- Redis主从架构复制原理

在前一篇文章中,对Redis主从复制进行了较为详细的说明,本文将参考redis官网上关于主从复制的说明进行简单说明一下,这里对官网的英文描述进行简单翻译说明一下。首先说明下主从复制的特点,然后对主从复...

(三)RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1

如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧!用什么系统本文使用的是Centos7,为了保证对linux不太熟悉的伙伴也能轻松上手(避免折在安装的路上),下面是我的...

Redis探索之旅(3)- 在Windows下将Redis注册成本地服务

在上一篇文章中,已经简单的讲述了在Windows下如何搭建一个单实例的Redis服务了,但是按照上面的操作还是存在一点点问题的,那就是如果我们关闭控制台,那么Redis服务也跟随着一起关闭了,如果你只...

(一)RabbitMQ消息队列-RabbitMQ的优劣势及产生背景

为什么学习和使用RabbitMQ、RabbitMQ的优劣势分析、RabbitMQ产生的背景。
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)