javaboy
@javaboy

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Spring frameworkで実行中に静的リソースを追加

Q&A

Closed

解決したいこと

Kotlin(Javaをより簡単に記述できるトランスパイル言語)とspringを使って、webアプリケーションを作っています。そこで、実行中に静的リソースに画像を追加できるようにしたいのですが、再起動しないとアクセスできません。再起動せずにアクセスする方法を教えてください。

発生している問題・エラー

実行中に追加した静的リソースを読み込むと404 Not foundが発生します。

追記

今回、springのコントローラーから、formで送れれた画像を使用しようとしています。環境は、下記に記しておきますが、ideで動かすのではなく、jarを出力して動かそうと思っています。

項目 内容
OS mac
IDE IntelliJ IDEA(無償版)
ビルドツール Gradle(Kotlin)
1

1Answer

Comments

  1. @javaboy

    Questioner

    spring-boot-devtoolsはすでに入れてあります。
    しかし、あまり機能がわかっていないまま入れています。
    どのように今回の件について役立つのか、教えていただけませんか。
  2. spring-boot-devtoolsを入れると自動再起動が出来るようになります。なので、わざわざ自分で再起動しなくても勝手に反映してくれるようになります。

    ただ、spring-boot-devtoolsは環境によっては入れるだけではなく別で設定が必要になるようです。環境について書いていただければこちらで設定手順を教えることが出来るかと思います。
  3. @javaboy

    Questioner

    ありがとうございます。環境を載せておきます

    | 項目 | 内容 |
    |:-----------|:------------|
    | OS | mac |
    | IDE | IntelliJ IDEA(無償版) |
    |ビルドツール | Gradle(Kotlin)|
  4. https://bsblog.casareal.co.jp/archives/2953

    こちらのブログで紹介されている手順で自動再起動設定できましたので、参照してみてください。
    画像入れてrenameという形としましたが、再起動せずにURLが変更されるのまでは確認しました。

    あと、これを確認している途中で知ったのですが、Spring BootのConsoleを表示している箇所をアクティブにしてCtrl + rで再起動されましたので、上手くいかなかったらこれで代用するのも良いかもしれません(一通り自動再起動設定後にしか試してませんので、設定前の状態で行えるかはわかりません)
  5. @javaboy

    Questioner

    わざわざ検証までしていただきありがとうございます。

    教えていただいた記事ではIntelliJでファイルを追加しておりますが、実際にはspringのコントローラーで静的ファイル(formで送られた画像)を追加しようとしていたのです。質問の内容にそこまで書いていなくてすみません。やはりdata urlを使わないといけませんか。
  6. ファイルアップロードしてその画像を参照したいとのことで認識合っていますか?

    それでしたらstatic配下ではなく別フォルダを指定してそこにアップロードする仕組みにした方が良いかと思います。開発環境だけなら問題ありませんが、jarにした際にアップロードする場所がなく上手く行きません。

    実装方法は以下の記事を参考にしてみてください。
    ファイルアップロード機能はありそうな感じがしたため、そのファイルを簡単に参照するための方法です。
    ファイルアップロードした画像を見れるユーザーを限定したいみたいな要求があるのであれば使えない方法です。その場合は自分で画像取得用のControllerを自分で作るしかないです。


    https://qiita.com/dumbbell/items/afe8050b69c00cf91c6f

    ここのaddResourceLocationsは絶対パスも書けますので、ここをプロパティからフォルダ指定できるようにしておけばどの環境でも良い感じで動かせるようになると思いますので、試してみてください。

Your answer might help someone💌