快速开发框架SpringBoot-学习日记(二)

第2章 Spring Boot重要用法

自定义异常页面

  • 在resources目录中新建***public/error***目录
  • 在resources/public/error目录新建自定义异常页面,要求文件名称必须为对应的状态码,扩展名为html

多环境选择

总步骤

  • 定义多个子配置文件 或 在application.yml中定义多个环境配置
  • 在application.yml中进行多环境选择
  • 在接口实现类上通过@Profile进行多环境选择

实现步骤

定义配置文件

  • 定义application-dev.yml
# 开发环境
server:
  port: 8888
  servlet:
    context-path: /ddd
  • 定义application-pro.yml
# 生产环境
server:
  port: 9999
  servlet:
    context-path: /ppp
  • 定义application.yml
# 选择要运行的环境
spring:
  profiles:
    active: dev   # 这里选择的是dev环境

定义业务接口

public interface SomeService {
    String send();
}

定义两个接口实现类

@Service
@Profile("dev")   // 表示当前类是在dev环境下执行的
public class DevelopServiceImpl implements SomeService {
    @Override
    public String send() {
        return "开发环境dev";
    }
}
@Service
@Profile("pro")   // 表示当前类是在pro环境下执行的
public class ProductServiceImpl implements SomeService {
    @Override
    public String send() {
        return "生产环境pro";
    }
}

定义处理器

@RestController
public class SomeController {

    @Autowired
    private SomeService service;

    @RequestMapping("/some")
    public String someHandle() {
        return service.send();
    }
}

启动运行

  • 可以在Idea下直接运行,若要切换环境,可直接修改配置文件
  • 也可以打包后直接在命令行运行。若要切换环境,可在命令行添加参数

java -jar 03-multienv.jar --spring.profiles.active=dev

可以将所有配置放入一个配置文件

说明:此时仅需一个application.yml文件即可,无需其它子配置文件

# 选择要运行的环境
spring:
  profiles:
    # active: dev   # 这里选择的是dev环境
    active: pro   # 这里选择的是pro环境

---
# 开发环境
spring:
  profiles: dev    # 指定当前环境名称为dev
server:
  port: 8888
  servlet:
    context-path: /ddd
---
# 生产环境
spring:
  profiles: pro    # 指定当前环境名称为pro
server:
  port: 9999
  servlet:
    context-path: /ppp

读取自定义配置

读取主配置文件中的属性

通过@Value("${属性名}")可以读取application.yml文件中指定的属性的值

读取指定配置文件中的属性

通过@PropertySource(value="classpath:custom.properties", encoding = "utf-8")指定配置文件
注意,这里指定的自定义配置文件只能是properties文件,不能是yml文件。这个在spring官网有说明

YAML files cannot be loaded by using the @PropertySource annotation. So, in the case that you need to load values that way, you need to use a properties file.

读取对象属性

  • 需要添加依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
  • 需要定义与对象属性相对应的类
@Data
@Component
@PropertySource(value="classpath:custom.properties", encoding = "utf-8")
@ConfigurationProperties("student")
public class Student {
    private String name;
    private int age;
    private double score;
    private List<String> cities;
}

猜你喜欢

转载自blog.csdn.net/qq_39607449/article/details/84563641