クラスおよび注釈事務を使ってクラスのインスタンスを取得するメソッド@Transactional

今日、多くの種類のためにプロジェクトを行う際に、それが後の展開を容易にするため、他の場合は使用しないでください、同様の戦略モードになっ

すべての実装クラスが同じインタフェースを継承して、関係のないクラスの実装クラスは、すべての構築します

@Service
public class SendTemplateService {

    Map<String, WechatSendTemplateService> wechatSendTemplateServiceMap = new HashMap<>();

    // 构造函数,如果你是集合接口对象,那么就会把spring容器中所有关于该接口的子类,全部抓出来放入到集合中,如果子类使用了@Transactional事务注解,所获取的类都是代理实例,获取的类名也是附带代理实例信息
    public SendTemplateService(List<WechatSendTemplateService> wechatSendTemplateServices) {
        for (WechatSendTemplateService wechatSendTemplateService : wechatSendTemplateServices) {
            wechatSendTemplateServiceMap.put(wechatSendTemplateService.getClass().getSimpleName()
                    .replace("SendTemplateServiceImpl", "").toUpperCase(), wechatSendTemplateService);
        }
    }
}

アイデアは、自分のキーにマップ内のすべてのクラス、大会の名称を達成することです。キーのマップはすべて大文字、簡単な試合に時間を置きます

キーマッチを使用して、私は試合に名前の現象ではなく、クラスに気づきました

プロキシモードで表情で、springcglibの背面に注意してください。情報の2つのクラスがあり、プロキシインスタンスで他のすべての情報、プロキシインスタンスのクラス名を取りませんでした

ない注釈付き@Transactional二つのクラスコード帯域間の差はありません

他のすべては、トランザクション@Transactionalコメントを使用しています。

突然、AOPプロキシモードとSpringのトランザクションが達成されて思い出しました。したがって、このクラスを使用すると、プロキシされます@Transactional

公開された288元の記事 ウォン称賛88 ビュー430 000 +

おすすめ

転載: blog.csdn.net/ypp91zr/article/details/103618550