Spring MethodInvokingFactoryBean, exemple
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