Colección de citas famosas - Colección de poesías - Implementación del complemento de carga dinámica JVM-sandbox en combate real

Implementación del complemento de carga dinámica JVM-sandbox en combate real

En aplicaciones reales, cuando se desarrollan algunos de nuestros puntos de función, es necesario reiniciar la implementación antes de que se puedan aplicar las funciones. Sin embargo, esta función es más adecuada para el desarrollo de complementos. Divide funciones en contenedores independientes y proporciona desmontaje de puntos de función.

Supongamos que ahora tenemos la posibilidad de enviar mensajes de texto y correos electrónicos. En este momento, debe agregar una función para enviar mensajes WeChat o DingTalk.

Esperamos que estas dos partes estén conectadas al desarrollo de complementos de funciones de terceros. Serán dos frascos independientes, cada uno responsable de sus propias funciones.

Una vez completado el desarrollo, no es necesario reiniciar la aplicación. Solo necesita colocarla en una ubicación específica y dejar que la aplicación se actualice y cargue estos dos archivos jar directamente.

De hecho, existe un método. Cuando estaba desarrollando jvm-sandbox recientemente, descubrí que tiene esa función.

¿Cómo se hace?

Dada una ruta a un jar, escanee las rutas de los paquetes que terminan en jar.

Esta es sólo una versión de muestra. Si aún desea inyectar en función de los atributos, puede desvincular el comentario.

El caso anterior se basa en el escaneo de la interfaz de componentes y las clases de implementación en meta-INF\services\comsandboxAPI_Componentes_es necesario definirlas. Por ejemplo

Si tiene dificultades, puede usar el paquete kohsuke y definirlo en la clase: (tenga en cuenta que la interfaz debe implementarse, no es necesario crear archivos e implementarla manualmente).

Introducción al archivo Pom:

GroupContainerHelper puede entenderse como un Mapa, siempre que el objeto de este atributo exista en el Mapa, y si existe, se asigna el objeto.

Así es casi como se implementa la función. Si es Spring, puede usar la fábrica para resolver las clases escaneadas por SPI.

Por supuesto, en la posterior monetización, podrás jugar como quieras.

En cuanto a cómo cargar el paquete o actualizarlo, este artículo no entrará en detalles.

Si tienes una buena idea, también puedes dejar un mensaje para comunicarnos.