Clase y el método para obtener la instancia de la clase utilizando los asuntos de anotación @Transactional

Hoy en hacer el proyecto, debido a los muchos tipos, que se convirtió en un modo de estrategia similar, no lo utilice si otra cosa, para facilitar la expansión posterior

Toda clase hereda la implementación de la misma interfaz, y luego una clase de implementación de clase no relacionada construido todo

@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);
        }
    }
}

La idea es conseguir todas las clases en el mapa, el nombre de la convención en su propia llave. mapa de llave poner el tiempo en el todo en mayúsculas, fósforo fácil

Usando partido clave, me di cuenta de un fenómeno, no una clase con un nombre para que coincida

Tenga en cuenta la parte de atrás de springcglib, con una mirada que es un modo de proxy. Hay dos clases de información no tomaron el nombre de la clase de la instancia del proxy, toda la demás información a la instancia de proxy

@Transactional dos clases sin anotación hay diferencia entre la banda de código

Todo lo demás está utilizando la transacción @Transactional comentario.

De repente recordó se consigue la transacción del resorte con el modo de AOP proxy. Por lo tanto, se aproxima el uso de la clase @Transactional

Publicados 288 artículos originales · ganado elogios 88 · vistas 430 000 +

Supongo que te gusta

Origin blog.csdn.net/ypp91zr/article/details/103618550
Recomendado
Clasificación