springboot可以有多个配置文件,也可以指定其中一个配置。
我们先看下面这个例子
application.propeties内容如下:
aaa=111
如果在bean里这样取值:
@Value(value = "${aaa}") private String hello;
那么最终会取出一个111.
一个非常普通的例子。但有时候我们的环境需要改变,某些配置需要切换,那么该怎么办呢?
这就需要有多个配置文件了。
我们接下来创建一个application-dev.propeties(“dev”的意思就是开发,但实际上没有什么意义,你可以取名字叫“xxx”也行),里面写上如下配置。
aaa=333
然在application.propeties里多加一个这个
aaa=111 spring.profiles.active=dev
最终你会发现,代码里的取值不再是111,而是333了。因为application指定了配置。
指定配置还可以指定bean
我们在创建bean的时候都可以添加注解@Profile
新建一个service的接口:
public interface MyService { void hello(); }
写两个实现类:
@Service @Profile("dev") public class MyServiceImpl implements MyService{ @Override public void hello() { System.out.println("MyServiceImpl"); } }
@Service @Profile("prod") public class MyServiceImpl2 implements MyService{ @Override public void hello() { System.out.println("MyServiceImpl2"); } }
在调用下面bean的时候
@Resource private MyService myService;
同样配置spring.profiles.active=prod就可以使用prod的bean
注意的是:也可以使用命令行方式去启动:-- spring.profiles.active=xxx,其中xxx指application-xxx.yml配置文件的后缀.这个xxx设置什么都行.另外需要注意其他配置文件只能覆盖主配置文件的属性,但不是覆盖整个对象