20
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spring boot における静的ファイルのアクセス優先順位

Last updated at Posted at 2018-01-06

spring-boot における静的ファイルのアクセスについてのメモです。

Spring boot における静的ファイルの配置可能な場所

spring boot は、デフォルトの設定だと、
projectDirectory/src/main/resources/META-INF/resources/
projectDirectory/src/main/resources/
projectDirectory/src/main/resources/static/
projectDirectory/src/main/resources/public/
の下に配置することで、アクセスが可能となる。

例として、
それぞれのディレクトリに、下記のようにHTMLを配置した場合

project root
  └─ src
      └─ main
          └─ resources
              ├─ static
              |   └─ html
              |       └─ 1.html
              ├─ public
              |   └─ html
              |       └─ 2.html
              ├─ resources 
              |   └─ html
              |       └─ 3.html
              └─ META-INF
                  └─ resources
                      └─ html
                          └─ 4.html

それぞれのHTMLへは、
http://localhost:8080/1.html
http://localhost:8080/2.html
http://localhost:8080/3.html
http://localhost:8080/4.html
という形でアクセスが可能となる。

Spring boot における静的ファイルのアクセス優先順位

下記のように、それぞれのディレクトリに同じ名前のファイルが存在した場合

project root
  └─ src
      └─ main
          └─ resources
              ├─ static
              |   └─ html
              |       └─ test.html
              ├─ public
              |   └─ html
              |       └─ test.html
              ├─ resources 
              |   └─ html
              |       └─ test.html
              └─ META-INF
                  └─ resources
                      └─ html
                          └─ test.html

http://localhost:8080/test.html とアクセスすると、
META-INF/resources/html/test.html が返される

静的ファイルの検索順は、

  1. resources/META-INF/resources/
  2. resources/
  3. resources/static/
  4. resources/public/

の順で検索され、先に見つかったものが画面に返される。

プロジェクトで使用する場合について考えてみる

  1. resources/META-INF/resources/
  2. resources/

は、設定ファイルも置かれるので、静的ファイルを配置するには、適していないと思われる。

実際にプロジェクトで使用する場合には、

  1. resources/static/
  2. resources/public/

に配置することになるかと思う。

名称的に、

resources/static/ に、ライブラリなど変化しないもの。
resources/public/ プロジェクト固有のcssやjs などを配置

って感じだろうか。。。

うーむ。この辺ベストプラクティス的なものを知らないので、これでいいのかわからん。
教えて知ってる人( ;∀;)

20
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?