Spring MethodInvokingFactoryBean Пример

Spring MethodInvokingFactoryBean Пример

spring MethodInvokingFactoryBean type hierarchy

В Spring вы можете использоватьMethodInvokingFactoryBean для запуска метода, получения результата и внедрения результата в другой компонент. Этот метод invoker очень полезен в конфигурации XML, но теперь его меньше используют в пользу аннотаций и Spring-выражений.

1. MethodInvokingFactoryBean

1.1 Example to get the current Java version.

Конфигурация Spring XML

    
    
        
        
    

    
    
        
        
        
    

    
    
        
    
package com.example.web;

public class JavaUtils {

    String javaVersion;

    public String getJavaVersion() {
        return javaVersion;
    }

    public void setJavaVersion(String javaVersion) {
        this.javaVersion = javaVersion;
    }

}

1.2 Java equivalent.

    System.getProperties().getProperty("java.version")

2. MethodInvokingBean

Spring 4 представил новыйMethodInvokingBean, чтобы делать то же самое, только без возврата какого-либо значения.

2.1 Java code, a bit long, but it works.

  public void startDBM() {
    MethodInvokingBean mBean = new MethodInvokingBean();

    mBean.setTargetClass(DatabaseManagerSwing.class);
    mBean.setTargetMethod("main");
    String[] args = new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--user", "sa", "--password", "" };
    mBean.setArguments(args);
    try {
        mBean.prepare();
        mBean.invoke();
    } catch (Exception e) {
        e.printStackTrace();
    }
  }

2.2 The MethodInvokingBean is good at XML configuration, but not in Java code, you can do the same thing with just one line of code.

  public void startDBM() {
    DatabaseManagerSwing.main(
        new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--user", "sa", "--password", "" });
  }

2.3 XML example, show you how to pass a String [] array argument to MethodInvokingBean

    
        
        
        
            
                --url
                jdbc:derby:memory:dataSource
                --user
                sa
                --password