背景
之前搞Spring Cloud項(xiàng)目,為了使用Spring Cloud,工程級(jí)別的配置文件必須配置在bootstrap命名的配置文件中。
今天搞一個(gè)單獨(dú)的Spring Boot工程,發(fā)現(xiàn)不識(shí)別bootstrap命名的配置文件。
解決
研究了一下原來(lái)Spring Boot本身并不支持該命名的配置文件的加載。該配置文件的加載是Spring Cloud完成的。
需要引入以下jar
<!--需要引入該jar才能使bootstrap配置文件生效-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-context</artifactId>
</dependency>
加載該配置的源代碼:
@Configuration
@EnableConfigurationProperties(PropertySourceBootstrapProperties.class)
public class PropertySourceBootstrapConfiguration implements
ApplicationContextInitializer<ConfigurableApplicationContext>, Ordered {
public static final String BOOTSTRAP_PROPERTY_SOURCE_NAME = BootstrapApplicationListener.BOOTSTRAP_PROPERTY_SOURCE_NAME
+ "Properties";
private static Log logger = LogFactory
.getLog(PropertySourceBootstrapConfiguration.class);
private int order = Ordered.HIGHEST_PRECEDENCE + 10;
@Autowired(required = false)
private List<PropertySourceLocator> propertySourceLocators = new ArrayList<>();
@Override
public int getOrder() {
return this.order;
}
public void setPropertySourceLocators(
Collection<PropertySourceLocator> propertySourceLocators) {
this.propertySourceLocators = new ArrayList<>(propertySourceLocators);
}
BOOTSTRAP_PROPERTY_SOURCE_NAME名字如下:
public class BootstrapApplicationListener
implements ApplicationListener<ApplicationEnvironmentPreparedEvent>, Ordered {
public static final String BOOTSTRAP_PROPERTY_SOURCE_NAME = "bootstrap";