Spring Boot属性配置
1. Spring Boot的默认配置文件application.properties或者appliaction.yml
2. 自定义属性有多种方法:
2.1对于引用少数几个属性值,可以直接使用@Value注解直接引用自定义属性值,不需要@Configuration等注解配合.
application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:
com.windy.name="windy" com.windy.want="祝大家新年好"
然后直接在要使用的地方通过注解@Value(value=”${config.name}”)就可以绑定到你想要的属性上面
@RestController
public class UserController {
@Value("${com.windy.name}")
private String name;
@Value("${com.windy.want}")
private String want;
@RequestMapping("/")
public String hexo(){
return name+","+want;
}
}
2.2 有时候属性太多,一个个绑定太累,官方提倡绑定一个对象的Bean.
实现这种方式需要3个步骤:
这里我们新建一个Java类ConfigBean,并在这个类上加上注解@Configuration(下图少了这个注解)
@Configuration
@ConfigurationProperties(prefix = "com.windy")
//@PropertySource(classpath:application.properties)
public class ConfigBean {
private String name;
private String want;
// 省略getter和setter
}
还需要在spring Boot入口类加上@EnableConfigurationProperties
@SpringBootApplication
@EnableConfigurationProperties()
public class Chapter2Application {
public static void main(String[] args) {
SpringApplication.run(Chapter2Application.class, args);
}
}
最后在Controller中引入ConfigBean使用即可
@RestController
public class UserController {
@Autowired
ConfigBean configBean;
@RequestMapping("/")
public String hexo(){
return configBean.getName()+configBean.getWant();
}
}
3. 配置文件的优先级
application.properties和application.yml文件可以放在以下四个位置:
- 外置,在相对于应用程序运行目录的/congfig子目录里。
- 外置,在应用程序运行的目录里
- 内置,在config包内
- 内置,在Classpath根目录
同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如图:

此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.properties里的属性里面的属性就会覆盖application.yml。
4. 使用@Profile注解进行配置
首先定义一个DBConnect的接口
@Component
public interface DBConnector {
public void configure();
}
然后分别定义Mysql和Oracle的实现类
@Component
@Profile("Mysql")
public class MysqlConnector implements DBConnector {
@Override
public void configure() {
System.out.println("This is Mysql!");
}
}
@Component
@Profile("Oracle")
public class OracleConnector implements DBConnector {
@Override
public void configure() {
System.out.println("This is Oracle!");
}
}
在配置文件application.properties中指定使用哪个实现类
spring.profiles.active=Oracle
然后就可以这么用了
@RestController
public class DBContorller {
@Autowired
DBConnector dbConnector;
@RequestMapping("/db")
public void dbConnector(){
dbConnector.configure(); //最终打印"This is Oracle!"
}
}
除了spring.profiles.active来激活一个或者多个profile之外,还可以用spring.profiles.include来叠加profile
spring.profiles.active: Oracle spring.profiles.include: proddb,prodmq

浙公网安备 33010602011771号