Kir*_*ill 4 spring spring-boot
假设我有一个AppProperties用@ConfigurationProperties("app"). 它包含不同的应用程序属性,我通常使用这些属性在@Configuration类中配置我的 bean 。
@EnableConfigurationProperties(AppProperties.class)使其可用于@Autowiring,这对于 Java 配置非常方便。
但是我的应用程序上下文的一部分是使用过时的 XML 配置来配置的。我想知道如何@ConfigurationProperties AppProperties在 XML 配置中访问bean?如果只@EnableConfigurationProperties为我提供了给出 的能力name,我可能会像这样在 XML 中使用 SpEL:(#{appProperties.requiredProp}我真的很想实现它)。
不幸的是,我没有看到提供名称的方法,并且我尝试使用建议的appProperties名称失败:
SpelEvaluationException:EL1008E:在“org.springframework.beans.factory.config.BeanExpressionContext”类型的对象上找不到属性或字段“appProperties”——可能不是公共的或无效的?
我在调试器中看到实际上调用了 bean app-my.package.AppProperties,这并不明显,也从未明确说明。
在 JavaDoc for@EnableConfigurationProperties我注意到以下几点:
@ConfigurationPropertiesbean 可以以标准方式注册(例如使用@Bean方法),或者为方便起见,可以直接在此 (@EnableConfigurationProperties) 注释上指定。
这是否意味着我可以AppProperties通过application.properties使用@BeanJava 或<bean/>XML 中的任一方法注入的值以某种方式获得命名实例?
当然,我可以在整个自动装配AppProperties与XML配置的类,但我不认为这是一个很好的设计解决方案,因为上午只在一个感兴趣String的财产AppProperties。可能我不应该尝试在 XML 中使用这种“类型安全”属性方式,而只是坚持旧方式:使用${}-resolution,但我觉得我在@ConfigurationProperties概念中遗漏了一些东西,所以请告诉我。
有两种方法可以注册配置属性 bean。
注册@EnableConfigurationProperties.
@EnableConfigurationProperties(AppProperties.class)
public class Application {}
@ConfigurationProperties("app")
public class AppProperties {}
Run Code Online (Sandbox Code Playgroud)
@EnableConfigurationProperties当您按如下方式包含该类时,注解将自动将AppProperties类注册为一个名为 的 bean prefix-your.package.AppProperties:@EnableConfigurationProperties(AppProperties.class)并且AppProperties有一个前缀@ConfigurationProperties("app").
注册@Component或@Bean
@EnableConfigurationProperties
public class Application {}
@Component
@ConfigurationProperties("app")
public class AppProperties {}
Run Code Online (Sandbox Code Playgroud)
或者
@EnableConfigurationProperties
public class Application {
@Bean
@ConfigurationProperties("app")
public AppProperties appProperties() {
return new AppProperties();
}
}
Run Code Online (Sandbox Code Playgroud)
在@Component和@Bean会注册一个名为豆appProperties。通过使用第二种方法,您将能够使用 SpEL 来获取属性#{appProperties.requiredProp}
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |