我的项目应用程序和启动器中有 2 个模块。Starter 包含@Configuration
并告诉如何ServiceFoo
创建一个 bean。
@Configuration
@EnableConfigurationProperties(FooServiceConfiguration.class)
public class StarterFoo {
@Bean
public ServiceFoo defaultBean(FooServiceConfiguration conf){
new ServiceFooImpl(conf.getName(), conf.getNumber());
}
}
我的启动器中有另一个配置类。
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties("Foo")
public class FooServiceConfiguration {
private String name;
private int number;
// + accessors
}
在我的开胃菜中,我application.yml
有
Foo:
name: DefaultName
number: 101
starter 配置为自动配置
META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=StarterFoo
我想对我的数字配置发表意见,用户永远不会担心并覆盖该数字。我希望用户覆盖我的配置中的名称。
一旦我在应用程序(空白文件)中创建 application.yml,启动器配置的效果(来自启动器的 application.yml)就会消失。
如何从 starter 中定义的应用程序部分覆盖此配置?