本次记录一个小问题,万一以后还用得上。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>