今回は、将来使用できるように、小さな問題を記録します。springboot プロジェクトを開始するときに、ポート番号を指定してプロジェクトを開始できます。しかし、同社のプロジェクトでは、アプリケーションのポート番号を制御して、特定のアプリケーションだけが指定されたポート番号でのみ実行できるようにしていることがわかり、今回はその操作を記録します。
1. 最初のステップ
次のように、新しいデータベース テーブルを作成して、ポート番号とアプリケーション制限の構成を保存します。
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;
2、第2ステップ
この操作は、プロジェクトが mybatis-plus を統合しているという事実に基づいています。前述したように、調べるのを忘れていました。
(8 メッセージ) [4] springboot は mybatis-plus を統合します (超詳細) (on)_小z♂のブログ-CSDN Blog_springbootplus
次のクラスを プロジェクトに追加します。
Springコンテナにクラスを注入し、そのクラスにmybatisのマッパーを注入します マッパーは作成したテーブルのエンティティクラスをマッピングします 具体的には以前のmabatisの統合をひっくり返すことができます ここではスクリーンショットは撮りませんマッパー層とエンティティクラス、主にこのクラスです。
- @Value("${spring.application.name}") を通じてアプリケーションのサービス名を取得します。
- @Value("${server.port}") を通じてアプリケーションのポート番号を取得します。
このクラスは、メソッドを 1 つだけ持つInitializingBeanインターフェイスを実装します。
InitializingBean インタフェースは、Bean の初期化メソッドを提供します。これには、afterPropertiesSet メソッドのみが含まれます。このインタフェースを継承するすべてのクラスは、Spring コンテナが Bean を初期化するときにこのメソッドを実行します。
このようにして、プロジェクトの開始時にこれを使用して、グローバル静的属性を Redis に保存することや、この記事で実行したいこと、ポート番号を判断して制限することなど、プロジェクトの開始時に実行することができます。応用。
3、3番目のステップ
テスト結果を表示します。
データベースに構成されているデモ サービスのポートは8085です。
8085 が正常に起動している ことがわかります。
次に、ポートを8086に変更します。
起動に失敗していることが わかります。
4、第 4 ステップ
補足: なお、上記のインターフェースを実装する代わりに、label 経由で Spring コンテナに Bean を注入する、init-method 属性を追加する、特定のメソッドの初期化時に特定のメソッドを実行することも可能です豆。
例えば:
<bean id="testBean" class="com.Test" init-method="testMethod"></bean>