web-dev-qa-db-ja.com

spring configから静的メソッドを呼び出す

Spring構成ファイルで静的メソッドを呼び出すことは可能ですか?

public MyClass {

   public static void staticMethod() {
       //do something
   }

}
<bean id="myBean" class="MyClass">
   <!-- invoke here -->
</bean>
15
LucaA
  1. 静的メソッドがMyClassのインスタンスを作成すると、次のようになります

config

<bean id="myBean" class="MyClass" factory-method="staticMethod">
   <!-- invoke here -->
</bean>

コード

public static MyClass staticMethod() {
       //create and Configure a new Instance
}
  1. Beanのインスタンス化でのみメソッドを呼び出すようにしたい場合、springはこの方法では実行できません。

config

<bean id="myBean" class="MyClass" init-method="init">
   <!-- invoke here -->
</bean>

コード

public static void staticMethod() {
       //create and Configure a new Instance
}

public void init() {
     staticMethod();
}
19
Hank Lapidez

これを試して

<bean id="b1" class="org.springframework.beans.factory.config.MethodInvokingBean">
    <property name="staticMethod" value="MyClass.staticMethod" />
</bean>

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/factory/config/MethodInvokingBean.html を参照してください

14

次のようなものを試してください:

<!-- call static method -->
<bean id="test" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass" value="MyClass" />
    <property name="targetMethod" value="staticMethod" />
    <property name="arguments">
        <list>
            <value>anArgument</value>
        </list>
    </property>
</bean>

引数が必要ない場合は削除してください。

https://Gist.github.com/bulain/1139874 から取得

静的メソッドを呼び出す必要がありました。上記のコードは正常に機能しました。

これも同様に役立つかもしれません: スプリングを静的フィールドに値を注入する方法

1
jbarrameda

スプリング設定に注釈を使用している場合、@ Configurationクラスに次のメソッドを追加できます。

@Bean
public MethodInvokingFactoryBean methodInvokingFactoryBean() {
    MethodInvokingFactoryBean methodInvokingFactoryBean = new MethodInvokingFactoryBean();
    methodInvokingFactoryBean.setStaticMethod("MyClass.staticMethod");

    return methodInvokingFactoryBean;
}
0
Cloud