2017-04-20 11 views
2

spring-boot-starter-jerseyspring-boot-starter-tomcat(v。1.5.2)を使用しているWebサービスで作業していますので、spring-boot-starter-webを追加しないでください。さらに設定が複雑になります。 Swagger UI静的ファイルをフォルダに貼り付け、そこから提供したいと思います。spring-boot-starter-tomcatでは静的コンテンツを提供できますが、spring-boot-starter-webは使用できませんか?

私は疑問に思っているのは、spring-boot-starter-tomcatを使用して静的ファイルを提供できますか?私はSpring documentation saying that I can server static content from a variety of sources on the classpathを見つけましたが、私が見つけた例はSpring MVCを必要とするようです。私はJerseyを無効にし、静的ファイルをsrc/main/resources/staticに入れてTomcatだけをテストしようとしましたが、localhost/index.htmlに行くと404エラーが見つかりません。

私のパスからわかるように、私はMavenを使用しています。

Tomcatだけで静的ファイルを扱うことができるので、静的ファイルをspring-boot-starter-tomcatで提供できるはずです。この場合、これらのファイルはどこに置くのですか?

これを別の言い方をすると、私はSpring-provided spring-boot-sample-jersey projectで始まったと言います。私はJersey Webサービスがルートアドレス(/)への呼び出しに応答するという要件を持っています。/swaggerというサブディレクトリから提供される静的コンテンツ(HTML、CSS、JS)を追加するにはどうすればよいですか?

答えて

1

デフォルトのサーブレット(静的コンテンツを提供する)は、デフォルトで登録されています。しかし、それはドキュメントルートとして検索特定のパスだけを使用します。私はfinally find itにソースコードを掘り進まなければならなかった。私たちは、明示的にドキュメントルートを設定しない場合は、AbstractEmbeddedServletContainerFactoryで見れば、あなたは

private static final String[] COMMON_DOC_ROOTS = { 
     "src/main/webapp", "public", "static" }; 

を参照してくださいよ、上記の3つが検索されますパスです。最初に見つかったディレクトリがドキュメントルートとして使用されます。私はこれらのすべてが機能することを確認しました。

私たちは、クラスパスリソースとしてファイルを提供することができます場合は、別のディレクトリを設定したい場合は、カスタマイザ豆

@Bean 
public EmbeddedServletContainerCustomizer tomcatCustomizer() { 
    return new EmbeddedServletContainerCustomizer() { 
     @Override 
     public void customize(ConfigurableEmbeddedServletContainer container) { 
      container.setDocumentRoot(new File("src/main/resources/static")); 
     } 
    }; 
} 

を使用することができ、私は考え出したていない一つのことではなく、ファイル・システム・リソースのうち、 。私がリンクしているソースコードを見ると、META-INF/resourcesの存在を探しているコードがあります。それはうまくいくかもしれないと思ったが、残念ながらそれは私のためではなかった。たぶん、Spring Bootのチームの何人かが私たちを啓発するかもしれません。

+0

これと、http://stackoverflow.com/questions/29658240/spring-boot-jersey-allow-jersey-to-serve-static-contentでの回答により、Spring BootにSwagger UIを追加することができました。 + Spring Webを追加せずにJersey webapp。ありがとう!今、Swagger UIがダイジェスト認証をサポートしていないことに気づくことができたら、 –

関連する問題