6

我真的很想用引用属性文件中的单个属性来注释方法以进行注入。

@Resource("${my.service.url}")
private String myServiceUrl;

当然,这种语法不起作用;)这就是我在这里问的原因。

我知道我可以注入完整的属性文件,但这似乎太过分了,我不想要属性文件 - 我想要配置的值。

编辑:我只能看到使用 XML 将属性连接到给定字段的 PropertyPlaceholderConfigurer 示例。我仍然无法弄清楚如何通过注释来实现这一点?

4

5 回答 5

7

我知道距离最初的帖子已经有一段时间了,但我设法偶然发现了一个针对 spring 2.5.x 的解决方案

您可以在 spring xml 配置中创建“String”bean 的实例,然后可以将其注入到带注释的组件中

@Component
public class SomeCompent{
  @Autowired(required=true 
  @Resource("someStringBeanId")
  private String aProperty;

  ...
}

<beans ....>
   <context:component-scan base-package="..."/>

  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    ...
  </bean>
  <bean id="someStringId" class="java.lang.String" factory-method="valueOf">
    <constructor-arg value="${place-holder}"/>
  </bean>
</beans>
于 2009-08-18T11:27:17.033 回答
5

我创建了一个项目来解决 Spring 2.5.* 的这个问题:

http://code.google.com/p/spring-property-annotations/

对于 Spring 3,您可以使用 @Value("${propery.key}") 注释。

于 2010-12-03T12:01:52.170 回答
4

Spring 论坛上有一个关于此的主题。简短的回答是,实际上没有办法使用注释注入单个属性。

我听说 Spring 3.0 将改进对使用注解的支持,所以很可能很快就会解决这个问题。

于 2008-10-20T14:33:23.113 回答
0

如果您使用 XML 配置,您可以这样做。只需配置 PropertyPlaceholderConfigurer 并在配置中指定属性值

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath:com/foo/jdbc.properties</value>
    </property>
</bean>
<bean ...>
  <property name="myServiceUrl" value="${my.service.url}"/>
</bean>
于 2008-10-20T09:27:18.770 回答
-2

您可以尝试将属性“my.service.url”的值注入到您的 bean 中。

看看:http ://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-factory-placeholderconfigurer

HTH。

于 2008-10-20T08:30:37.543 回答