アノテーションどうしようかな

public static final String sendMethod_TO = "rokugen@hoge.jp";

みたいにメソッド毎に指定出来るようにするとなると今のままだと具合が悪いかも。

MaiMetaDataImplのコンストラクタで、Maiインタフェース名.diconを探して見つかった場合、各メソッド共通のMailが作られて、その次にMaiインタフェース名_メソッド名.diconを探して見つかったら、メソッド単位のMailが作られる。

見つからなかったら、各メソッド共通のMailがそのままメソッドをキーにしたMapに入れられて、その後にアノテーションの値をセットしてる。

ので。

  1. Maiインタフェース名.diconがある
  2. Maiインタフェース名_メソッド名.diconがない
  3. アノテーションがメソッド名_プロパティ名と、メソッド単位での指定になっている

場合。各メソッド共通Mailの参照は一緒なので他のメソッドの分までアノテーションの値で上書きされちゃう、気がする。

ここ。

private Mail getMail(Class maiClass, Mail classMail, Method method) {
    Mail mail = null;
    try {
        String path = maiClass.getName().replaceAll("\\.", "/") + "_" + method.getName() + ".dicon";
        S2Container container = S2ContainerFactory.create(path);
        mail = (Mail) container.getComponent(Mail.class);
    } catch (ResourceNotFoundRuntimeException e) {
        mail = classMail; ← ここ
    }
    if (mail == null) {
        mail = new Mail();
    }
    return mail;
}

メソッド単位に共通Mailのコピーを作ってやらなきゃいけないのか。勿体無い気もするけど。最初に作った共通Mail、誰も参照しなくなるし。やるとするなら

    mail = new Mail(classMail);

でいいと思う。