web-dev-qa-db-ja.com

戦争としてデプロイされたスプリングブートアプリケーションのデフォルトのウェルカムページを変更する

私は、実稼働環境で戦争としてデプロイされているスプリングブートアプリケーションのデフォルトのウェルカムページを変更する方法を探していましたが、web.xmlファイルなしでそれを行う方法を見つけることができませんでした。

ドキュメントによると、このコードでEmbeddedServletContainerFactoryを使用してそれを行うことができます。

@Bean
public EmbeddedServletContainerFactory servletContainer() {

    TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();

    TomcatContextCustomizer contextCustomizer = new TomcatContextCustomizer() {
        @Override
        public void customize(Context context) {
            context.addWelcomeFile("/<new welcome file>");
        }
    };
    factory.addContextCustomizers(contextCustomizer);

    return factory;
}

ただし、warファイルを作成してTomcatに展開し、組み込みTomcatを使用していないので、これは何もしていません。

何か案が? web.xmlファイルを本当に追加する必要がある場合、どうすればそれでもスプリングブートを使用できますか? DispatcherServletのアプリケーションコンテキストとしてApplication Bean(mainメソッドを使用)を指定する必要がありますか?ドキュメントはそれについてあまり明確ではありません。

古いServletコンテナは、Servlet 3.0で使用されるServletContextInitializer bootstrapプロセスをサポートしていません。これらのコンテナでSpringとSpring Bootを引き続き使用できますが、web.xmlを追加する必要がありますアプリケーションに追加し、DispatcherServletを介してApplicationContextをロードするように設定します。

前もって感謝します!

ペドロ

18
pVilaca

難しくありません...デフォルトのマッピングを転送するだけです...

@Configuration
public class DefaultView extends WebMvcConfigurerAdapter{

    @Override
    public void addViewControllers( ViewControllerRegistry registry ) {
        registry.addViewController( "/" ).setViewName( "forward:/yourpage.html" );
        registry.setOrder( Ordered.HIGHEST_PRECEDENCE );
        super.addViewControllers( registry );
    }
}
25
Eddie B

Michaelのチュートリアル に続いて、/ わたしの index.gspファイル。

@Controller
class Routes {

    @RequestMapping({
        "/",
        "/bikes",
        "/milages",
        "/gallery",
        "/tracks",
        "/tracks/{id:\\w+}",
        "/location",
        "/about"
    })
    public String index() {
        return "forward:/index.gsp";
    }
}
7
Nick Grealy

さて、最後の答えから数年が経ちました-そしてコードは進化します。

これは、Spring 5では機能しません/ Java 8+、インターフェースを実装し、デフォルトのメソッドをオーバーライドする必要があります。

import org.springframework.core.Ordered;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class DefaultViewConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("/homepage.html");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
    }
}
3
Yossi

私はそれを次のようにやっています。

package org.gwtproject.tutorial.configuration;

import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

/**
 * Configure the welcome page 
 * 
 */
@Configuration
public class SpringBootWelcomePageConfiguration extends WebMvcConfigurerAdapter implements WebMvcConfigurer {

    /**
     * redirect a user to the welcome page when he visits tha app without a
     * destination url.
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("forward:/ForExampleAGwtEntrypoint.html");
        registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
        super.addViewControllers(registry);
    }
}
0
99Sono