- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在致力于支持使用基于 XML 的配置的旧 Spring Java 项目。从属性源注入(inject)的方式如下:
<context:property-placeholder location="classpath:app.properties"/>
我正在开发一项新功能,该功能作为单独的 Spring 项目实现,作为遗留项目的依赖项。为了与时俱进,该新项目使用 JavaConfig 而不是基于 XML 的配置。因此,我的类用 @Configuration
进行注释,其中包含一些 @Bean
方法,并执行其他逻辑来设置我的项目中的类。我通过在 XML 配置中将配置声明为 bean 来注入(inject)并加载配置:
<context:annotation-config/>
<beans:bean class="com.example.MyDefaultConfiguration"/>
此 JavaConfig 依赖于某些注入(inject)的属性。我从各种来源读到的内容,例如 this blog post和 this SOF answer ,这可以通过将 Environment
实例注入(inject)我的 JavaConfig 类来完成。因此我将其作为注入(inject)的全局字段:
@Inject
private Environment environment;
然后我可以根据需要在 @Bean 方法中执行此操作:
String prop = environment.getProperty("my.property");
但是,尽管在我的类路径的 app.properties 文件中清楚地列出了该属性,但在环境中找不到该属性并导致值为 null。相反,如果我使用 @Value
注释样式注入(inject)属性,如下所示,那么我确实可以将 String 变量正确注入(inject)到:
@Value("${my.property}")
private String prop;
我很高兴能够解决这个问题,但我仍然很好奇为什么注入(inject)的环境变量样式对我不起作用。这让我担心我在某处搞砸了某种配置。大家有什么想法吗?
最佳答案
这个
<context:property-placeholder location="classpath:app.properties"/>
本质上等同于
<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="locations" value="classpath:app.properties" />
</bean>
这只是一个具有属性的 bean。不涉及 Spring Environment
。也就是说,由属性占位符配置程序定义和加载的属性不会添加到环境
中,因此您无法通过它检索它们。
通过Java注释配置,您可以通过使用@PropertySources
注释您的@Configuration
类来向Environment
添加属性,该类指定一组@PropertySource
值。
@PropertySources(value = { @PropertySource(value = "classpath:app.properties") })
@Configuration
public class Example {}
并检索它们
@Autowired
private Environment env;
...
env.getProperty("my.property");
这样您就不需要向 property-placeholder
提供位置
。
关于java - Spring:无法使用环境从 XML 向 JavaConfig 注入(inject)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29292945/
Java 在 JSR-330 中添加了官方依赖注入(inject)支持,例如 @Inject、@Named 等。这些可以与 Spring 或 Guice 等不同的框架一起使用。 Spring 还提供了
浏览 Spring Javaconfig 引用文档 http://docs.spring.io/spring-framework/docs/current/spring-framework-refer
什么是 JavaConfig 等价物? 尝试像这样声明它,但它仅充当单例 @Bean public CheckOutCounter checkOutCounter(){
找不到错误(( Spring MVC + Hibernate,JavaConfig WebAppConfig: package com.sprhib.init; import java.util.Pr
我在配置camel以使用java配置与mavencamel:run插件时遇到问题。 这是插件 xml: org.apache.camel
我编写了一个调度程序,它仅在处理 xml 文件时才能按预期工作。但我无法使用 Javaconfig 类运行它。以下是代码。 调度程序: public class DemoServiceBasicUsa
我们正在尝试将 AspectJ @Aspect 实现到我们现有的软件中,以便在进行服务调用后执行一些代码。 注意: 我们的服务接口(interface)和实现是@Autowired通过其余 Contr
有多个用@Configuration 注释的类,我想在顶级配置组件中决定在上下文中注册哪一个。 @Configuration public class FileSystemDataStoreConfi
这个问题在这里已经有了答案: Spring: @Component versus @Bean (16 个答案) 关闭 8 年前。 在 JavaConfig 中定义一个 bean 与仅仅注释一个类有何
这个问题在这里已经有了答案: How to import Java-config class into XML-config so that both contexts have beans? (3
Spring 大约需要 5 到 10 秒来自行配置,我将 XML 用于基础结构 bean,并使用带有注释的组件扫描来处理其他所有内容。 Spring JavaConfig 是否消除了组件扫描的需要以及
我有一个问题要解决:1)我们的项目使用 Spring JavaConfig 方法(所以没有 xml 文件)2)我需要创建自定义范围,xml中的示例如下所示:
我是 Spring 框架的新手,我在理解 @Required 时遇到了问题。注释与 Java 配置的应用程序相结合。 这是一个例子。 配置文件 @Configuration public class
我最近正在使用 spring data jpa 开发 spring web 应用程序 我在持久性配置方面遇到问题: @Configuration @EnableTransactionManagemen
我正在尝试设置一个在我的 Spring WebMVCConfig 中未找到的页面,它无法正常工作.. 这是我的配置: @Configuration @EnableWebMvc @PropertySou
我对 Spring 框架还很陌生,在理解 @Required 注释与 Java 配置的应用程序结合使用时遇到了问题。 这是一个示例。 配置文件 @Configuration public class
我们的 Spring 配置包含大约 1200 个 bean,我们使用 component-scan/@Autowired。如果我们将 ApplicationContext 导出为 Xml(并且仍然使用
目前我有一个加载属性文件的 Spring xml 配置(Spring 4)。 上下文属性 my.app.service = myService my.app.other = ${my.app.serv
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我正在将一些现有的 xml 配置转移到 Spring 的 Java 配置。在这个过程中,我遇到了一些被转移的Java代码,抛出一个checked Exception . @Bean public Po
我是一名优秀的程序员,十分优秀!