嗨,我正在尝试使用我从2个应用程序中使用spring boot(2.0.5)创建的可重用库,我能够将classpath中的application.properties的属性绑定到bean上,如下所示,在我的第一个spring批处理应用程序中的调试器中通过设置器设置的模式,该应用程序也是通过spring boot(2.0.5)创建的
这是我的库中的属性bean类,其中包含一些服务api-该库只是使用spring boot创建的jar包。
包com.test.lib.config
@ConfigurationProperties("job")
@PropertySources({
@PropertySource(value = "${ext.prop.dir}", ignoreResourceNotFound = true),
@PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true)
})
public class ServiceProperties {
/**
* Schema for the service
*/
private String schema;
public String getSchema() {
return schema;
}
public void setSchema(String schema) {
this.schema = schema;
}
}
该库的配置bean如下所示,位于同一包中。
@Configuration
@EnableConfigurationProperties(ServiceProperties.class)
@ComponentScan("com.test.lib")
public class LibraryModuleConfig {
}
当从包含该库作为依赖项的sprint引导弹簧批处理应用程序中调用时,此代码工作得非常好,并且在application.properties中添加job.schema=testSchema
时可以看到相应的设置器。 / p>
我尝试在现有的spring mvc Web应用程序中使用相同的库,该应用程序是从雄猫服务器启动的,带有外部文件目录作为启动参数(此应用程序不是使用Spring Boot创建的),并添加了适当的context:component-scan以application-context(appn-context.xml)中的库中的bean(Java配置bean)。 job.schema属性既通过application.properties文件传递,也通过C驱动器中的外部文件传递,如@propertySources批注中的$ {ext.prop.dir}“所给。ServiceProperties Bean中的schema属性从不设置,并且甚至连setter也都不会在调试中被调用。为什么这个libray config bean在现有的spring mvc应用程序中不起作用,而在spring batch应用程序中起作用,它们都将库添加为依赖项。时间,除了spring属性绑定以外,其他功能似乎都起作用。
答案 0 :(得分:0)
@EnaleConfigurationProperties
是Spring Boot提供的方便注释。 (Spring MVC默认不提供)
对于旧版Spring MVC应用程序(特定于Spring 3.x),可以对属性使用@Value
批注。
@Value
注释也可以在Spring Boot中使用,所以我想您可以进行更改,以便它可以与旧版本(Spring 3.x)和较新版本一起使用,而无需进行任何更改。
希望这会有所帮助!快乐编码:)