Spring MethodInvokingFactoryBean-Beispiel

Spring MethodInvokingFactoryBean Beispiel

spring MethodInvokingFactoryBean type hierarchy

Im Frühjahr können SieMethodInvokingFactoryBean verwenden, um eine Methode auszuführen, das Ergebnis abzurufen und das Ergebnis in eine andere Bean einzufügen. Dieser Methodenaufruf ist in der XML-Konfiguration sehr nützlich, wird jetzt jedoch weniger für Annotationen und Spring-Ausdrücke verwendet.

1. MethodInvokingFactoryBean

1.1 Example to get the current Java version.

Spring XML-Konfiguration

    
    
        
        
    

    
    
        
        
        
    

    
    
        
    
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 hat ein neuesMethodInvokingBean eingeführt, um dasselbe zu tun, nur ohne einen Wert zurückzugeben.

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