SpringBoot动态切换配置文件

 

在应用程序中有不少配置项,例如数据库链接地址、日志文件位置、应用服务器配置等等。为了安全与灵活性,咱们推荐将Spring Boot的配置文件放在生产环境的服务器上,并严格控制访问权限。在运行应用时能够经过命令行参数指定配置文件:html

java -jar location_of_your_jar_file.jar --spring.config.location=location_of_your_config_file.properties

这样作的好处是:java

  • 配置位于生产环境中,数据库链接等私密信息不容易泄露
  • 灵活性强,同一份代码(包括构建的jar包)能够应用于不一样的环境配置(开发、测试、生产)

使用Profile区分环境

在某些状况下,应用的某些业务逻辑可能须要有不一样的实现。例如邮件服务,假设EmailService中包含的send(String email)方法向指定地址发送电子邮件,可是咱们仅仅但愿在生产环境中才执行真正发送邮件的代码,而开发环境里则不发送以避免向用户发送无心义的垃圾邮件。spring

咱们能够借助Spring的注解@Profile实现这样的功能,这样须要定义两个实现EmailService借口的类:数据库

 

@Service
@Profile("dev")
class DevEmailService implements EmailService {

    public void send(String email) {
        //Do Nothing
    }
}

@Service
@Profile("prod")
class ProdEmailService implements EmailService {

    public void send(String email) {
        //Real Email Service Logic
    }
}

@Profile("dev")代表只有Spring定义的Profile为dev时才会实例化DevEmailService这个类。那么如何设置Profile呢?安全

在配置文件中指定

application.properties中加入:服务器

spring.profiles.active=dev

经过命令行参数

java -jar app.jar --spring.profiles.active=dev

 

另外一篇更为详细的方法,基本差很少:app

http://www.cnblogs.com/java-zhao/p/5469183.html测试

相关文章
相关标签/搜索