欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

实际上我们还可以直接 劳务派遣信息管理系统 使用random函数来配置server.port

点击: 次  来源:宝鼎软件 时间:2017-07-31

原文出处: 纯洁的微笑

一些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这样的库,然后有<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>

    参考:thymeleaf模板对没有竣事符的HTML5标签理会堕落的办理步伐。

    随机端口

    为Spring Cloud的应用实用随机端口很是简朴,主要有两种要领:

    配置server.port=0,软件开发,当应用启动的时候会自动的分派一个随机端口,可是该方法在注册到Eureka的时候会一个问题:所有实例都利用了同样的实例名(如:Lenovo-test:hello-service:0),这导致只呈现了一个实例。所以,我们还需要修改实例ID的界说,让每个实例的ID差异,好比利用随机数来设置实例ID:

    server.port=0
    eureka.instance.instance-id=${spring.application.name}:${random.int}

    除了上面的要领,实际上我们还可以直接利用random函数来设置server.port。这样就可以指定端口的取值范畴,好比:

    server.port=${random.int[10000,19999]}

    由于默认的实例ID会由server.port拼接,软件开发,而此时server.port配置的随机值会从头取一次随机数,所以利用这种要领的时候不需要从头界说实例ID的法则就能发生差异的实例ID了。

    参考:thymeleaf模板对没有竣事符的HTML5标签理会堕落的办理步伐