一些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
spring boot项目启动的时候会自动执行剧本。
ddl-auto 四个值的表明
差异点
第一种方法启动的时候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标签理会堕落的办理步伐