一、项目创建

我们使用IDEA工具开发后台项目,具体的安装过程自行搜索,比较简单。安装完成后打开IDEA,菜单栏选择File->New-Project,选择Spring Initializr,默认选择Default,然后Next。




DevEco java构建项目 dev如何建项目_logback配置文件详解


填写好项目基本信息,选择Java Version为8以上,然后Next。


DevEco java构建项目 dev如何建项目_logback配置文件详解_02


选择Web,右边勾选Web依赖。


DevEco java构建项目 dev如何建项目_logback配置文件详解_03


选择SQL,右边勾选MySQL、JDBC、MyBatis依赖,然后Next。


DevEco java构建项目 dev如何建项目_DevEco java构建项目_04


填写项目名称和路径,点击完成即可创建项目。


DevEco java构建项目 dev如何建项目_logback配置文件详解_05


二、项目目录

项目目录结构如下:


DevEco java构建项目 dev如何建项目_logback配置文件详解_06


DemoApplication为工程启动的入口类,application.properties为配置文件,pom.xml为maven项目依赖。

我们看一下pom.xml依赖,里面包含我们创建项目过程中选择的依赖。

mysql mysql-connector-java runtime

mysql的依赖我们看到有这么一段runtime。

关于scope的分类,参照网上的讲解:

1、complie

编译域,这个是Maven中scope的默认值,默认就是使用这个值。compile表示被依赖项目需要同当前项目编译时一起进行编译,项目测试期以及本项目运行时期同样生效,打包的时候需要包含进去。

2、test

测试域,指的是被依赖的项目仅在项目进行测试的时候生效,一般将日志等依赖包(如:logback、Junit、Slf4j等)配置为test,项目运行时不生效。

3、runtime

运行域,指的是被依赖项目不会参与项目的编译,但项目的测试期和运行时期会参与。

4、provide

provided指的是打包的时候可以不必打包进去,别的容器会提供。配置provide的被依赖项目会参与编译,测试,运行等周期,但是在打包阶段未参与。

5、system

系统域,效果等同于provided相同,差别是依赖项不会从maven远程中央仓库下载,而是从本地Maven仓库中获取。

三、配置文件概述

Spring Boot提供了两种常用的配置文件,分别是properties文件和yml文件。

1.properties

Properties属于传统配置文件,语法结构以key=value的形式存在,缺点是中文会乱码,需要将其转换为注ASCII。

2.yml

yml是YAML(YAML Ain't Markup Language)语言的文件,以空格的缩进程度来控制层级关系,大小写敏感。空格的个数无关紧要,只要左边空格对齐即可视为同一个层级,但是需要注意的是不能用tab代替空格。

鉴于yml这种方式看起来比较一目了然,且yml文件中文不会乱码,我们的项目主要使用yml文件进行配置,特殊情况使用properties文件配置。

四、yml配置文件详解

在商业项目开发过程中,对代码质量的把控都比较严格,所以通常会有三种配置环境,即开发环境、测试环境、生产环境,根据不同的环境类型配置相应的属性。

首先,删除工程创建后默认的application.properties文件,创建application.yml文件。我们以开发环境配置为例,在resources目录下创建application-dev.yml文件。具体如下:


DevEco java构建项目 dev如何建项目_DevEco java构建项目_07


application.yml配置如下:

默认使用开发配置spring: profiles: active: dev main: allow-bean-definition-overriding: true

其中active为dev默认就是加在开发环境的配置文件,也就是springboot启动会加载application-dev.yml内的配置项。allow-bean-definition-overriding: true

表示有相同bean的直接覆盖。

再来看下application-dev.yml文件:

#开发配置spring: profiles: dev

profiles为dev就是为了标识当前配置文件是开发环境,和application.yml文件中的active相对应。

五、配置文件取值

当我们需要给配置文件自定义内容,在其他类中获取相应值的时候,我们通常有两种方式取值,即ConfigurationProperties和Value。

Spring Boot通过ConfigurationProperties注解从配置文件中获取属性,Spring的Value注解也可以获取属性。区别在于:

ConfigurationProperties

1.ConfigurationProperties可以从配置文件中批量注入属性。

2.支持获取复杂的数据类型。

3. 对属性名匹配的要求较低。

4. 支持JAVA的JSR303数据校验。

5.不支持强大的SpEL表达式。

Value

1.只能一个个配置注入值。

2.不支持数组、集合等复杂的数据类型。

3. 不支持数据校验。

4. 对属性名匹配有严格的要求。

5.支持SpEL表达式。

由于使用的是Spring Boot,我们还是重点讲解ConfigurationProperties

注解取值。

  1. 首先导入依赖
org.springframework.boot  spring-boot-configuration-processor  true

2.在application-dev.yml配置文件中增加测试数据

#测试数据配置home: province: 辽宁 city: 大连 desc: 我居住在${home.province} ${home.city}

3.新增匹配类

新建包名为property,新建类文件HomeProperties,如图:


DevEco java构建项目 dev如何建项目_logback配置文件详解_08


HomeProperties类如下:

@Component@ConfigurationProperties(prefix = "home")public class HomeProperties { /** * 省份 */ private String province; /** * 城市 */ private String city; /** * 描述 */ private String desc; public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } @Override public String toString() { return "HomeProperties{" + "province='" + province + ''' +