本次记录一个小问题,万一以后还用得上。springboot项目启动时可以随便指定端口号进行启动。但是在公司项目上我发现他做了一个对应用端口号的控制,只能某个应用只能跑规定的端口号,本次就将这个操作记录下来了。
一、第一步
新建数据库表,用于保存端口号以及应用限制的配置,如下:

  
   - 
    
     
    
    
     
      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;
     
    
二、第二步
这次操作是基于项目已经整合了mybatis-plus,前面有讲过,忘了可以去翻翻。
(8条消息) 【四】springboot整合mybatis-plus(超详细)(上)_小z♂的博客-CSDN博客_springbootplus
在项目中新增如下类:

将该类注入spring容器,并向该类注入mybatis的mapper,该mapper映射的是刚才创建的表的实体类,具体可以翻翻前面的整合mabatis,此处就不截图mapper层和实体类了,主要将这个类。
- 通过@Value("${spring.application.name}")获取应用的服务名称
- 通过@Value("${server.port}")获取应用的端口号
 
 
该类实现至InitializingBean接口,该接口只有一个方法。

InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在spring容器初始化该bean的时候会执行该方法。
如此这般,就可以通过它来做一些项目启动时想做的事了,例如将一些全局静态属性存入redis或者本文想做的,将该应用的端口号去做判断,进行限制。
三、第三步
查看测试结果:
数据库中配置的demo服务的端口为8085。


可见,8085启动成功。
现在修改端口为8086。


可见启动失败了。
四、第四步
补充:此外,不通过实现上述接口,通过标签将bean注入spring容器时,通过加上init-method属性指定一个方法,也可以实现初始化某个bean时执行某个方法。
例如:
<bean id="testBean" class="com.Test" init-method="testMethod"></bean>
转载:https://blog.csdn.net/weixin_56995925/article/details/125583168
