spring-boot之(3) profile

  在我们发布测试的时候会分很多环境,比如开发环境,测试环境,准生产环境,生产环境,在spring boot中提供了不同环境的配置——profile。

  • 整理项目结构

  按照spring boot推荐的项目结构规范一下demo的结构。现在项目结构整理如下

  Java Project

    src/main/java

      com.xxx.xxx

        - web

          IndexController.java

        - config

          Config.java

        App.java

    - src/main/resources

      - application.yml

    src/test/java

      com.xxx.xxx

        AppTest.java

    pom.xml

  • 注解获取配置文件的值

  配置文件我们采用yml格式的,yml格式的写法比properties更加有层次感,更加直观。在application.yml配置,yml的语法大家可以自行百度

test:
  username: fzhsh

server:
  port: 80

  然后在IndexController.java获取配置文件里面的值,关于yml和properties的对应关系可以查看

  https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-loading-yaml

@RestController
public class IndexController {

    @Value("${test.username}")
    private String username;

    @Autowired
    private Config config;

    @RequestMapping("/")
    String hello(){
        return username + ", hello world !!!" + config.getServers();
    }
}

  启动后访问http://localhost会发现获取到username的值

  • 按profiles来生效对应的配置

  修改application.yml的内容如下:

# common configuration
server:
  port: 80

# 设置生效的配置
spring:
  profiles:
    active: prod

---
# dev configuration
spring:
  profiles: dev

test:
  username: dev

my:
  servers:
    - dev.dev.bar.com
    - dev.foo.bar.com

---
# test configuration
spring:
  profiles: test

test:
  username: test

my:
  servers:
    - test.dev.bar.com
    - test.foo.bar.com

---
# prod configuration
spring:
  profiles: prod

test:
  username: prod

my:
  servers:
    - dev.bar.com
    - foo.bar.com

再访问http://localhost会发现prod的配置生效

  • 另外yml语法支持很多数据类型,比如上面配置文件里面的数组格式
my:
  servers:
    - dev.bar.com
    - foo.bar.com

config.java文件如下,使用ConfigurationProperties注解

@Component
@ConfigurationProperties(prefix = "my")
public class Config {
    private List<String> servers = new ArrayList<String>();

    public List<String> getServers(){
        return servers;
    }
}

 

参考资料:

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-configuration-classes

posted @ 2017-04-27 17:41  風之殤  阅读(126)  评论(0)    收藏  举报