从spring配置调用静态方法

时间:2014-12-04 14:16:01

标签: java xml spring static

是否可以在Spring配置文件中调用静态方法?

public MyClass {

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

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

4 个答案:

答案 0 :(得分:19)

  1. 当静态方法创建MyClass的实例时,你可以这样做
  2. 配置

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

    public static MyClass staticMethod() {
           //create and Configure a new Instance
    }
    
    1. 如果你想只在bean实例化上调用方法,那么spring就不能这样做。
    2. 配置

      <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();
      }
      

答案 1 :(得分:13)

试试这个

<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

答案 2 :(得分:1)

尝试这样的事情:

<!-- 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

我需要调用静态方法。上面的代码运行正常。

这也可能有用:How to make spring inject value into a static field

答案 3 :(得分:0)

如果您使用注释进行spring配置,可以将以下方法添加到@Configuration类中:

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

    return methodInvokingFactoryBean;
}
相关问题