目录
一、自定义异常页面
对于404、405、500等异常状态,服务器会给出默认的异常页面,而这些异常页面一般都是英文的,且非常不友好。我们可以通过简单的方式使用自定义异常页面,并将默认状态码页面进行替换
1、定义目录
在src/main/resources目录下再定义新的目录public/error,必须是这个目录名称
2、定义异常页面
3、修改处理器模拟500错误
4、访问效果
二、单元测试
1、定义接口
2、定义Service两个实现类
注意,实现类上要添加@Service注解,以交给Spring容器来管理
3、测试
三、多环境选择
下面将实现如下功能:存在开发与生产两种环境,不同环境使用不同配置文件,不同环境调用不同接口实现类。使用不同端口号对不同的配置文件加以区分
1、定义配置文件
说明:
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}为对应的环境标识,例如,
- application-dev.properties:开发环境
- application-pro.properties:生产环境
至于哪个配置文件会被加载,则需要在application.properties文件中通过spring.profiles.active属性来设置,其值对应{profile}值。例如,spring.profiles.active=test就会加载application-test.properties配置文件内容。
在生产环境下,application.properties中一般配置通用内容,并设置spring.profiles.active属性的值为dev,即,直接指定要使用的配置文件为开发时的配置文件,而对于其它环境的选择,一般是通过命令行方式去激活。配置文件application-{profile}.properties中则配置各个环境的不同内容
2、定义业务代码
SomeService接口
SomeService实现类
SomeServiceImpl
OtherSomeServiceImpl
说明:
在实现类上添加@Profile注解,并在注解参数中指定前述配置文件中的{profile}值,用于指定该实现类所适用的环境
3、定义处理器
4、Idea下运行与访问
配置dev环境
配置pro环境
5、在命令行下选择环境
例如,现在的主配置文件中指定的是dev环境
打包
将当前工程打为Jar包后,在命令行运行时添加如下参数
此时执行的就是生产环境,调用的就是ProduceServiceImpl类。
说明:
在命令行中添加的参数可以是写在配置文件中的任意属性。其原理是命令行设置的属性值的优选级高于配置文件的
5、单配置文件实现方式
这种实现方式只能使用application.yml文件,使用application.properties文件好像文件本身就会出错
- spring:
- profiles:
- active:
- - dev
-
- ---
- spring:
- profiles: dev
-
- server:
- port: 8888
- servlet:
- context-path: /xxx
-
- ---
-
- spring:
- profiles: pro
-
- server:
- port: 9999
- servlet:
- context-path: /yyyy
四、读取主配置文件中的属性
1、定义配置文件
2、定义配置属性类
- package com.sping.boot.demo.bean;
-
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.context.annotation.PropertySource;
- import org.springframework.stereotype.Component;
-
- @Component
- @PropertySource(value = "classpath:MyApp.properties",encoding = "utf-8")
- @ConfigurationProperties("game")
- public class Game {
- private String name;
- private String sex;
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getSex() {
- return sex;
- }
-
- public void setSex(String sex) {
- this.sex = sex;
- }
- }
说明:
- @ProertySource用于指定要读取的配置文件
- @ConfigurationProperties用于指定要读取配置文件中的对象属性,即指定要读取的配置文件属性的前辍
- @Component表示当前从配置文件读取来的对象,由Spring容器创建
- 要保证类的属性名要与配置文件中的对象属性名相同
3、修改SomeController类
五、读取List<String>属性
1、导入依赖
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-configuration-processor</artifactId>
- </dependency>
2、定义配置文件
3、定义配置属性类
4、修改SomeController类