JavaでMethodUtils.invokeMethodを使用してメソッドをインジェクションする
MethodUtils.invokeMethod()は、commons-beanutils-1.x.x.jarライブラリを使用すれば使えるようになります。
私の環境では、commons-beanutils-1.8.2.jarを使用しています。
だいたいの使い方は第一引数にthis、第二引数にメソッド名(String型)、第三引数に第二引数に設定したメソッドの引数を設定します。
以下、引数がない場合の例です。nullを設定します。
MethodUtils.invokeMethod(this, "method", null);
上記はmethod()メソッドを実行する例です。
以下、引数がある場合の例です。
MethodUtils.invokeMethod(this, "method", new Object[] { "aaa", 1.0 });
上記はmethod(String,double)メソッドを実行する例です。
以下のようにインジェクションした場合、method1実行完了後、method2が実行されます。
MethodUtils.invokeMethod(this, "method1", null);
MethodUtils.invokeMethod(this, "method2", new Object[] { "aaa", 1.0 });
以下、例です。
package jp.co.confrage;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.MethodUtils;
public class TestMain {
/**
* @param args
* @throws InvocationTargetException
* @throws IllegalAccessException
* @throws NoSuchMethodException
*/
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
Sample s = new Sample();
s.start();
}
public static class Sample {
public void start() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
MethodUtils.invokeMethod(this, "method1", null);
MethodUtils.invokeMethod(this, "method2", new Object[] { "aaa", 1.0 });
}
public void method1 () throws InterruptedException {
Thread.sleep(10000);
System.out.println("実行されました");
}
public void method2 (String str1, double str2) {
System.out.println(str1);
System.out.println(str2);
}
}
}
以下、実行結果です。
実行されました aaa 1.0

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント