6

インジェクションのために、プロパティ ファイル内の単一のプロパティへの参照を使用して、メソッドに注釈を付けたいと考えています。

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

もちろん、この構文は機能しません ;) それが、私がここで質問している理由です。

完全なプロパティ ファイルを挿入できることは承知していますが、それは過剰に思えます。プロパティ ファイルは必要ありません。構成された値が必要です。

編集: プロパティを特定のフィールドに配線するために XML が使用されている PropertyPlaceholderConfigurer の例しか見ることができません。注釈を使用してこれをどのように達成できるかまだわかりませんか?

4

5 に答える 5

7

元の投稿からしばらく経っていることは知っていますが、Spring 2.5.x でこれに対する解決策を見つけることができました。

Spring xml 構成で「文字列」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 に答える