Spring Boot 属性文件配置
Spring Boot 允许我们通过*.properties
文件、*.yml
文件、环境变量、命令行参数等来外部化应用程序的配置,以便我们在不同的环境可以使用同一套程序代码。
Spring Boot 允许我们通过*.properties
文件、*.yml
文件、环境变量、命令行参数等来外部化应用程序的配置,以便我们在不同的环境可以使用同一套程序代码。
Thymeleaf 是一个服务器端 Java 模板引擎,能够处理 HTML、XML、CSS、JAVASCRIPT 等模板文件。Thymeleaf 模板可以直接当作静态原型来使用,它主要目标是为开发者的开发工作流程带来优雅的自然模板,也是 Java 服务器端 HTML5 开发的理想选择。
Spring Boot 对 Thymeleaf 模板引擎提供了自配置的良好支持。Spring Boot 1.5.2.RELEASE 版本默认使用的是 Thymeleaf 2.0+,本文使用 Thymeleaf 3.0+ 版本,在 pom.xml 中添加以下声明:
|
|
然后添加 Thymeleaf 依赖声明:
|
|
Spring MVC 支持多种模板技术,如 JSP、FreeMarker、Thymeleaf 等。Spring Boot 官方并不推荐使用 JSP 模板引擎,如果有可能,应尽量避免使用 JSP,因为当使用嵌入式 Servlet 容器时,对使用 JSP 模板引擎有几个已知的限制,以下是 Spring Boot 支持自动配置的模板引擎(其中并不包含 JSP):
Spring Boot 不是一个新的框架,它是提供一种使我们更易于创建基于 Spring 的最小或零配置的独立应用和服务的方式。
Spring 对于 Java 开发者来说一定都并不陌生,它作为目前非常流行的一个 Java 应用开发的基础框架,应用非常广泛。然而,由于其配置繁杂,各样格式的XML配置文件,着实让人头疼。
Spring Boot 的出现,可以让我们只需要非常简单的几步就可以搭建起一个基于 Sprign 框架的 Web 应用程序。Spring Boot的主要目标:
@ManyToMany
是属性或方法级别的注解,用于定义源实体与目标实体是多对多的关系。
参数 | 类型 | 描述 |
---|---|---|
targetEntity | Class | 源实体关联的目标实体类型,默认是该成员属性对应的集合类型的泛型的参数化类型。 |
mappedBy | String | 用在双向关联中。如果关系是双向的,则需定义此参数(与 @JoinColumn 互斥,如果标注了 @JoinColumn 注解,不需要再定义此参数)。 |
cascade | CascadeType[] | 定义源实体和关联的目标实体间的级联关系。当对源实体进行操作时,是否对关联的目标实体也做相同的操作。默认没有级联操作。该参数的可选值有: CascadeType.PERSIST(级联新建) CascadeType.REMOVE(级联删除) CascadeType.REFRESH(级联刷新) CascadeType.MERGE(级联更新) CascadeType.ALL(包含以上四项) |
fetch | FetchType | 定义关联的目标实体的数据的加载方式。 可选值: FetchType.LAZY(延迟加载,默认) FetchType.EAGER(立即加载) 延迟加载:只有在第一次访问源实体关联的目标实体的时候才去加载。 立即加载:在加载源实体数据的时候同时去加载好关联的目标实体的数据。 |
@OneToMany
是属性或方法级别的注解,用于定义源实体与目标实体是一对多的关系。
参数 | 类型 | 描述 |
---|---|---|
targetEntity | Class | 源实体关联的目标实体类型,默认是该成员属性对应的集合类型的泛型的参数化类型。 |
mappedBy | String | 用在双向关联中。如果关系是双向的,则需定义此参数(与 @JoinColumn 互斥,如果标注了 @JoinColumn 注解,不需要再定义此参数)。 |
cascade | CascadeType[] | 定义源实体和关联的目标实体间的级联关系。当对源实体进行操作时,是否对关联的目标实体也做相同的操作。默认没有级联操作。该参数的可选值有: CascadeType.PERSIST(级联新建) CascadeType.REMOVE(级联删除) CascadeType.REFRESH(级联刷新) CascadeType.MERGE(级联更新) CascadeType.ALL(包含以上四项) |
fetch | FetchType | 定义关联的目标实体的数据的加载方式。 可选值: FetchType.LAZY(延迟加载,默认) FetchType.EAGER(立即加载) 延迟加载:只有在第一次访问源实体关联的目标实体的时候才去加载。 立即加载:在加载源实体数据的时候同时去加载好关联的目标实体的数据。 |
orphanRemoval | boolean | 当源实体关联的目标实体被断开(如给该属性赋予另外一个实例,或该属性的值被设为 null。被断开的实例称为孤值,因为已经找不到任何一个实例与之发生关联)时,是否自动删除断开的实例(在数据库中表现为删除表示该实例的行记录),默认为 false。 可参考:orphanRemoval 与 CascadeType.REMOVE 的区别 |
@OneToOne
是属性或方法级别的注解,用于定义源实体与目标实体是一对一的关系。
参数 | 类型 | 描述 |
---|---|---|
targetEntity | Class | 源实体关联的目标实体类型,默认是该成员属性对应的类型,因此该参数通常可以缺省。 |
mappedBy | String | 用在双向关联中。如果关系是双向的,只能有一方作为主体端,另一方则需声明此参数以表明将表间的这种关联关系转交给对方来维护。 |
cascade | CascadeType[] | 定义源实体和关联的目标实体间的级联关系。当对源实体进行操作时,是否对关联的目标实体也做相同的操作。默认没有级联操作。该参数的可选值有: CascadeType.PERSIST(级联新建) CascadeType.REMOVE(级联删除) CascadeType.REFRESH(级联刷新) CascadeType.MERGE(级联更新) CascadeType.ALL(包含以上四项) |
fetch | FetchType | 定义关联的目标实体的数据的加载方式。 可选值: FetchType.LAZY(延迟加载) FetchType.EAGER(立即加载,默认) 延迟加载:只有在第一次访问源实体关联的目标实体的时候才去加载。 立即加载:在加载源实体数据的时候同时去加载好关联的目标实体的数据。 |
optional | boolean | 源实体关联的目标实体是否允许为 null,默认为 true。 |
orphanRemoval | boolean | 当源实体关联的目标实体被断开(如给该属性赋予另外一个实例,或该属性的值被设为 null。被断开的实例称为孤值,因为已经找不到任何一个实例与之发生关联)时,是否自动删除断开的实例(在数据库中表现为删除表示该实例的行记录),默认为 false。 |
@Column
是属性或方法级别的注解,用于指定持久化属性映射到数据库表的列。如果没有指定列注释,则使用其默认值。
参数 | 类型 | 描述 |
---|---|---|
name | String | 列的名称,默认为属性的名称(Hibernate 映射列时,若遇到驼峰拼写,会自动添加 _ 连接并将大写字母改成小写)。 |
unique | boolean | 列的值是否是唯一的。这是 @UniqueConstraint 注解的一个快捷方式, 实质上是在声明唯一约束。默认值为 false。 |
nullable | boolean | 列的值是否允许为 null。默认为 true。 |
insertable | boolean | 列是否包含在 INSERT 语句中,默认为 true。 |
updatable | boolean | 列是否包含在 UPDATE 语句中,默认为 true。 |
columnDefinition | String | 生成列的 DDL 时使用的 SQL 片段。默认使用推断的类型来生成 SQL 片段以创建此列。 |
table | String | 当前列所属的表的名称。 |
length | int | 列的长度,仅对字符串类型的列生效。默认为255。 |
precision | int | 列的精度,仅对十进制数值有效,表示有效数值的总位数。默认为0。 |
scale | int | 列的精度,仅对十进制数值有效,表示小数位的总位数。默认为0。 |
@Temporal
是属性或方法级别的注解,用于声明属性持久化到数据库时所使用的时间精度。该注解可以应用于任何以下类型的实体类属性:
参数 | 类型 | 描述 |
---|---|---|
value | TemporalType | 存储的类型,可选值: TemporalType.DATE(日期) TemporalType.TIME(时间) TemporalType.TIMESTAMP(日期和时间) |
@GeneratedValue
是属性或方法级别的注解,它结合 @Id
注解为主键的值提供生成策略的规范。
参数 | 类型 | 描述 |
---|---|---|
strategy | GenerationType | 主键生成策略。可选值: GenerationType.TABLE GenerationType.SEQUENCE GenerationType.IDENTITY GenerationType.AUTO 默认是 GenerationType.AUTO。 |
generator | String | 主键生成器的名称。该名称为 @TableGenerator 或 @SequenceGenerator 注解中 name 参数的值。默认为持久化提供者(如 Hibernate)提供的id生成器。 |
@Basic
是属性或方法级别的注解,该注解可以应用于任何以下类型的实体类属性:
在实体类中,对以上这些类型的属性,如果没有标注 @Basic
注解,则将使用 @Basic
注解的默认值。
参数 | 类型 | 描述 |
---|---|---|
fetch | FetchType | 属性值的加载策略。可选值: FetchType.EAGER:即时加载; FetchType.LAZY:延迟加载,当第一次访问属性时才进行数据的加载; 默认为 FetchType.EAGER。 |
optional | boolean | 是否允许为 null,默认为 true。 |