microservices-book
  • 前言
  • 微服务基础
    • 微服务架构和单体应用架构
    • 微服务架构特征
    • 微服务治理与去中心化
    • 微服务演进式设计与优缺点
    • 微服务宏观把控
  • 面向服务的架构
    • SOA 理论与概念
    • 维基百科微服务
    • 微服务和 SOA 对比
  • Spring Boot
    • Spring Boot 应用起步与配置
    • Spring Boot 应用配置分析
    • Spring Boot 打包文件内容与结构
    • 使用 Gradle 构建 Spring Boot 应用
    • Spring Boot 参数自动装配
    • Jar 文件规范
    • Spring Boot Loader 源码分析
    • 反射扩展
    • JDWP 远程调试
    • 使用 JDWP 调试 Spring Boot Loader 源码
    • @SpringBootApplication
    • @SpringBootConfiguration
    • @Configuration
Powered by GitBook
On this page
  • Spring Boot 自带配置项
  • 自定义配置项
  • 配置文件方式
  • 配置类方式
  • 配置类方式最佳实践

Was this helpful?

  1. Spring Boot

Spring Boot 参数自动装配

Previous使用 Gradle 构建 Spring Boot 应用NextJar 文件规范

Last updated 6 years ago

Was this helpful?

Spring Boot 自带配置项

Spring Boot 默认自带了很多配置项,可以根据自己的需要对 application.properties 或者 application.yml 进行修改,这里对几种常见的做一个演示。

默认配置项可以参考:

spring:
  application:
    name: lichee
  mandatory-file-encoding: UTF-8
  http:
    encoding:
      enabled: true
      charset: UTF-8
  • name

    应用的名字。

  • mandatory-file-encoding

    应用程序必须使用预期的字符编码。

  • enabled

    启动 http 的编码支持。

  • charset

    HTTP请求和响应的字符集。

自定义配置项

配置文件方式

Spring Boot 不但可以修改它自带的属性,也可以自定义需要的属性,只要 key 不重复就好。也是根据自己的需要对 application.properties 或者 application.yml 进行属性添加。

config:
  lichee:
    name: 里奇
    age: 30

使用方式和以前传统的 Spring 模式一样,通过 @Value 注释来获取。

@Value("${config.lichee.name}")
private String name;

@Value("${config.lichee.age}")
private int age;

配置类方式

Spring Boot 的配置类必须被 @Configuration 注释所标记,Spring 通过 package 扫描的机制就可以识别出这个类是配置类,就会通过配置的信息进行属性、对象等注入。

@Configuration
public class Config {

    @Bean
    public Lichee initLichee() {

        return new Lichee();
    }
}

这个 initLichee 方法上面的 @Bean 注释是关键,只有标记了这个注释后,才能把 Lichee 这个实例交给 Spring 管理的 Bean 对象。也就是 initLichee 这个方法返回的对象是 Spring 管理的,Spring 才会进行属性、对象注入。

public class Lichee {

    @Value("${config.lichee.name}")
    private String name;

    @Value("${config.lichee.age}")
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

上面的操作完成以后,就可以在需要的地方进行调用了。

    @Autowired
    private Lichee lichee;

配置类方式最佳实践

几年前 Java Config 这种做法是不对的,而现在提倡这样。

在项目中,专门分配一个名为 config 的 package,把项目相关的 都放在这个 package 里。

Spring Boot Docs
Java Config
javaConfigIdea