我已经使用将要使用的Spring框架创建了一个SDK 与REST后端集成,以利用依赖注入。
在此SDK中,我MapPropertySources
来处理PropertyPlaceHolders
。
基本上我以编程方式注册我想要的一些属性
要在SDK中使用@Value
注释进行解析。
它在SDK中运行良好,但是当我构建SDK时(使用构建器)
在Spring-boot
应用内,来自MapPropertiesPlaceHolder
的属性
不再解决了。
我有来自构建器类的这段代码:
public MyRepository build() {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext();
StandardEnvironment env = new StandardEnvironment();
context.setEnvironment(env);
Map<String, Object> propertiesMap = new HashMap<>();
propertiesMap.put("baseUrl", baseUrl);
MutablePropertySources mutablePropertySources = context.getEnvironment().getPropertySources();
mutablePropertySources.addFirst(new MapPropertySource("customPropertiesMap", propertiesMap));
if(jerseyClient == null){
jerseyClient = JerseyClientBuilder.createClient();
}
context.getBeanFactory().registerSingleton("jerseyClient", jerseyClient);
context.setParent(null);
context.register(MySdk.class);
context.refresh();
MySdk mySdk = new MySSdk(context);
return mySdk;
}
这是我实例化SDK的方式,我创建了一个新的 里面的Spring上下文。
问题是MapPropertySource
内的属性
当我将SDK用作另一个中的maven依赖时,未解析
spring-boot
申请。它可能与父母有任何关系
背景?这些属性尚未解决......我应该在哪里进行调查?
问题很长,我在SDK测试中解析了@Value('${baseUrl})
,但是当我将此SDK包含在另一个spring-boot
应用程序中时,它将不再被解析。为什么呢?
编辑:
MySdk
课程如下所示:
@ComponentScan
@Service
@PropertySource("classpath:application.properties")
public class DeviceRepository {
private ApplicationContext context;
public MySdk(){
}
public MySdk(ApplicationContext context) {
this.context = context;
}
// other methods that calls beans from context like
// this.context.getBean(MyBean.class).doSomething()
在同一个SDK中的测试中,一切正常。该
baseUrl
属性解析得很好,但是当我将此SDK连接到另一个时
spring应用程序,在构建器中传递的属性,它们不是
由@Value
注释识别。
答案 0 :(得分:1)
您是否在Spring配置中定义了PropertySourcesPlaceholderConfigurer
bean?每当属性解析在@Value
注释内失败时,这是首先想到的事情之一。
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
链接到Javadoc:
答案 1 :(得分:0)
嗯,刚刚阅读了一些关于利用属性占位符来利用java配置的有趣内容。看看这个链接#3。看起来你必须注册另一个bean。
http://www.baeldung.com/2012/02/06/properties-with-spring/
另外值得注意的是,有关儿童与父母情境的整体范围讨论。我不相信你可以在没有建立这种关系的情况下有两种情境。