美文网首页
Spring Boot & 配置

Spring Boot & 配置

作者: 大批 | 来源:发表于2018-08-05 12:40 被阅读27次

简介

首先是理解以下配置,配置可以简单的理解成配置bean。平时写代码如果不考虑扩展性的话,很多的配置信息都写死在了代码里面(要修改就比较麻烦)。配置就可以狭义的理解成将一些属性,常量等放到一个配置文件里面去。
spring boot 的配置方式比较多,我们先讲讲常见的方式。比较常见的方式就是classpath下面的application.properties,spring boot 会加载这个配置文件。
对待配置也要有理智的认识,配置就是为了使用配置,而不是为了配置而配置

创建配置

  • 在classPath下面创建一个 application.properties 文件
  • 添加一些配置(配置是以键值对的形式添加)


使用配置(这个才是最重要的)

  • 使用注解的形式 @Value(这里可以理解成 SPEL 表达式)
@SpringBootApplication
@RestController
public class App {

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

    @Value("${number}")
    private String number;

    @Value("${user.firstname}")
    private String firstName;

    @RequestMapping("/")
    public String showProperInfo(){
        return firstName+name+" "+number;
    }
    public static void main(String[] args){
        SpringApplication.run(App.class,args);
    }
}
  • 使用 Java 代码来取
@SpringBootApplication
@RestController
public class App {

    @Autowired
    Environment environment;

    @RequestMapping("/")
    public String showProperInfo(){
        String firstName = environment.getProperty("user.firstname");
        String name = environment.getProperty("name");
        String number = environment.getProperty("number");
        return firstName+name+" "+number;
    }

    public static void main(String[] args){
        SpringApplication.run(App.class,args);
    }
}
  • 自动装配到Java类的属性,注解@ConfigurationProperties(spring boot的自动装配的bean基本都是使用这种方式实现)。可以理解成以一种模式来装配
    • 修改一下配置信息


    • 注解配置,ConfigurationProperties 配置一个前缀,配置文件里面的属性就可以和前缀映射起来(注意这里要配置的属性需要get 和 set 方法)
@SpringBootApplication
@RestController
@Configuration
@ConfigurationProperties(prefix = "my.setting")
public class App {

    private String name;
    private String number;

    @RequestMapping("/")
    public String showProperInfo(){
        return name + "  " + number;
    }

    public static void main(String[] args){
        SpringApplication.run(App.class,args);
    }

    public String getName() {
        return name;
    }

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

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

Application.properties的其他功能

  • 属性之间的引用,配置的属性可以引用其他配置属性(可以简单的理解成文本替换)


  • 随机数支持


不同配置之间的切换

  • 有时候有这样的需求,测试的时候是一个配置,开发的时候是一个配置
  • 按照一定的规律建立多个配置文件,通过激活不同的配置文件来实现不同配置之间的切换


  • 通过spring.profiles.active属性激活不同的配置,如果要激活application-dev.properties就使用spring.profiles.active=dev。如果要激活application-pro.properties就使用spring.profiles.active=pro。这个属性可以配置多个(spring.profiles.active=pro,dev)


条件化配置

  • 使用场景是有一些bean在测试的时候需要注册,有些bean仅仅在生产环境注册
  • spring 提供了@Profile注解来条件化配置,这个注解是和上面配置的spring.profiles.active属性一起使用的,比如如果@Profile("dev")对应的bean或者配置类就仅仅是在spring.profiles.active中有dev是被初始化
  • 任何使用了@Component 和 @Configuration注解的类都可以使用Profile注解
@Configuration
@Profile("dev")
public class ProductionConfiguration {

}

 


End

[2]  using spring boot
[1]  spring boot mvc

相关文章

网友评论

      本文标题:Spring Boot & 配置

      本文链接:https://www.haomeiwen.com/subject/sqzjmftx.html