Red de conocimiento informático - Aprendizaje de programación - La misma orden de ejecución del interceptor de mybatis

La misma orden de ejecución del interceptor de mybatis

Conclusión: Los interceptores que interceptan el mismo método están en orden inverso al que tenemos en el archivo mybatis-config.xml, y el complemento configurado por el contenedor Spring ejecuta el método en último lugar.

interceptor personalizado mybatis (1) uso básico

interceptor personalizado mybatis (2) detalles del objeto

¡El interceptor personalizado Mybatis integrado con SpringBoot no funciona como solución!

Lectura recomendada: cómo surte efecto el complemento

Ubicación de origen: mybatis autoconfigure: org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration#sqlSessionFactory

Nota: SqlSessionFactoryBean implementa la interfaz InitializingBean, que se ejecuta en el método afterPropertiesSet() de org.SqlSessionFactoryBean. método afterPropertiesSet() en el método SqlSessionFactoryBean#buildSqlSessionFactory para leer el archivo xml ConfigLocation, analizar el complemento y colocarlo en el conjunto.

Ubicación de origen: org.apache.ibatis.plugin.InterceptorChain Este método representa el objetivo y representa la clase de proxy. La clase objetivo se mejora capa por capa, por lo que cuanto más tarde sea el interceptor, más se ejecutará.

Y el método del complemento:

en realidad llama al método Plugin.wrap(target, this).

El método wra crea un objeto proxy.

El método wrapper() representa el objeto de destino un nivel a la vez. En otras palabras, el orden de ejecución antes de cortar es el opuesto al orden al insertar el complemento.

Orden de ejecución de múltiples complementos de mybatis