Spring Bootで作成したjarファイルをWindowsでサービスとして動作させる方法をご紹介します。
公式サイトの「Spring Boot アプリケーションのデプロイ 2.3. Microsoft Windows サービス」にも記載があり、リンクを辿っていくとやり方が分かるのですが、情報がまとまっていなく内容も簡易的で迷うところがあるため、この記事にまとめます。
ちなみにLinuxでサービス化する方法はこちらです。

jarファイルの準備
Spring Bootでjarファイルを作成します。普通に作成すればいいですが、実行可能jarとして作成しましょう。
実行可能jarの作り方はこちらです。

winsw.exeダウンロード
winsw.exe を使います。ここに手順の記載があります。
GitHub – winsw/winsw: A wrapper executable that can run any executable as a Windows service, in a permissive license.
手順の記載中にダウンロードページがあります。ここです。
Releases · winsw/winsw (github.com)
この中の WinSW.NET4.exe をダウンロードします。
XMLファイルを作成
XMLファイルを作成します。これが起動時の設定になります。今回はこのXMLファイルをmyapp.xmlとします。
<service> <id>myapp</id> <name>My Application</name> <description>This service runs My Application system.</description> <executable>java</executable> <arguments>-jar "C:\\myapp.jar"</arguments> </service>
nameがサービスの名前列に表示されます。descriptionがサービスの説明列に記載されます。
このコマンドで常駐サービスが作成できます。実際に実行する際には管理者権限でコマンドプロンプトを開き、WinSW.NET4.exeとXMLファイルは絶対パスで指定するといいでしょう。
> WinSW.NET4.exe install myapp.xml
失敗談
jarファイルの場所を間違えてXMLに記載していて、登録したサービスを起動したらポップアップでこうなりました。
--------------------------- サービス --------------------------- ローカル コンピューター の myapp サービスを開始できません。 サービスはエラーを返しませんでした。Windows の内部エラーまたはサービスの内部エラーであった可能性があります。 問題が解決しない場合は、システム管理者に問い合わせてください。 --------------------------- OK ---------------------------
なんでjarファイルの場所が違うと分かったのか、イベントビューアを確認すると、そのサービスが何のコマンドを実行したのか記載してある。なのでそれを見た。また、登録したサービス自体もファイルでログが出る。
サービスの登録に失敗したら、削除してまた登録すればいい。次のコマンドでサービスを削除。
sc delete "サービス名"
まとめ
Windows OS機能のタスクスケジューラでjarを実行するよう設定したことがあるのですが、なぜか起動されないことも多く、タスクスケジューラ機能を使っていくのは難しいようでした。
また、Tomcatをサービスとしてインストールして、そこにSpring Bootで作成したwarファイルをデプロイしてもいいのですが、お手軽さが損なわれるためjarファイルをサービス化するのがお勧めです。