[Pregunta] El proyecto Springboot restringe el número de puerto de la instancia a través de la base de datos

        Esta vez se registra un pequeño problema, por si se puede utilizar en el futuro. Cuando se inicia el proyecto Springboot, puede especificar el número de puerto para iniciarlo. Pero en el proyecto de la empresa, descubrí que había realizado un control en el número de puerto de la aplicación . Solo una determinada aplicación solo puede ejecutar el número de puerto especificado, y esta operación se registra esta vez.


1. El primer paso

        Cree una nueva tabla de base de datos para guardar la configuración del número de puerto y las restricciones de la aplicación , de la siguiente manera:

CREATE TABLE `sys_service` (
  `service_code` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '服务名称',
  `service_desc` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '服务描述',
  `service_port` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '服务端口号',
  `status` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '状态,0是启用,1是停用'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin;

Dos, el segundo paso.

        Esta operación se basa en el hecho de que el proyecto ha integrado mybatis-plus , como mencioné anteriormente, olvidé buscarlo.

(8 mensajes) [4] springboot integra mybatis-plus (súper detallado) (en) Blog-CSDN de _小z♂ Blog_springbootplus

Agregue la siguiente clase         al proyecto :

        Inyecte la clase en el contenedor Spring e inyecte el asignador de mybatis en la clase. El asignador asigna la clase de entidad de la tabla recién creada. Específicamente, puede revertir la integración anterior de mabatis. Aquí, no tomaremos capturas de pantalla de la capa del mapeador y la clase de entidad, principalmente esta clase.

  • Obtenga el nombre del servicio de la aplicación a través de @Value("${spring.application.name}")
  • Obtenga el número de puerto de la aplicación a través de @Value("${server.port}")

 

        Esta clase implementa la interfaz InitializingBean , que tiene un solo método.

        La interfaz InitializingBean proporciona un método de inicialización para beans. Solo incluye el método afterPropertiesSet. Todas las clases que heredan esta interfaz ejecutarán este método cuando el contenedor Spring inicialice el bean.

        De esta manera, puede usarlo para hacer algunas cosas que desea hacer cuando se inicia el proyecto, como almacenar algunos atributos estáticos globales en redis o lo que desea hacer en este artículo, para juzgar y limitar el número de puerto del solicitud.

Tres, el tercer paso.

        Ver resultados de la prueba:

        El puerto del servicio de demostración configurado en la base de datos es 8085 .

        Se puede ver que el 8085 se inicia correctamente .

        Ahora modifique el puerto a 8086

        Se puede ver que el inicio falló .

Cuatro, el cuarto paso.

        Suplemento : Además, en lugar de implementar la interfaz anterior,se inyecta un bean en el contenedor Spring a través de una etiqueta, alagregar el atributo init-methodpara especificar un método, también es posible ejecutar un determinado método al inicializar un determinado frijol.

Por ejemplo:

<bean id="testBean" class="com.Test" init-method="testMethod"></bean>

Supongo que te gusta

Origin blog.csdn.net/weixin_56995925/article/details/125583168
Recomendado
Clasificación