Spring MethodInvokingFactoryBean Exemple

Spring MethodInvokingFactoryBean, exemple

spring MethodInvokingFactoryBean type hierarchy

Dans Spring, vous pouvez utiliserMethodInvokingFactoryBean pour exécuter une méthode, obtenir le résultat et injecter le résultat dans un autre bean. Cet invocateur de méthode est très utile dans la configuration XML, mais moins utilisé maintenant en faveur de l'annotation et de l'expression Spring.

1. MethodInvokingFactoryBean

1.1 Example to get the current Java version.

Configuration 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 a introduit un nouveauMethodInvokingBean pour faire la même chose, juste sans renvoyer aucune valeur.

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