Подтвердить что ты не робот

Вызов статического метода из spring config

Можно ли вызвать статический метод в файле конфигурации Spring?

public MyClass {

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

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

Ответ 1

  • Когда статический метод создает экземпляр MyClass, вы делаете это так:

конфигурации

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

код

public static MyClass staticMethod() {
       //create and Configure a new Instance
}
  1. Если вы хотите, чтобы метод вызывался только при bean экземпляре spring, он не может этого сделать.

конфигурации

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

Ответ 3

Попробуйте что-то вроде этого:

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

Мне нужно было вызвать статический метод. Приведенный выше код работал нормально.

Это может быть полезно также: Как сделать spring значение в статическом поле.

Ответ 4

Если вы используете аннотации для конфигурации spring, вы можете добавить следующий метод в свой класс @Configuration:

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

    return methodInvokingFactoryBean;
}