Spring MVCチュートリアル

** 1概要

**

これは、SpringベースのMVCプロジェクトのセットアップ方法を示す単純なSpring MVCチュートリアルです。Javaベースの構成とXML構成の両方を使用します。

Spring MVCプロジェクトに対するMavenの依存関係は、リンク:/spring-with-maven#mvc[Spring MVCの依存関係]の記事で詳しく説明されています。

** 2 Java構成を使用したSpring MVC

**

Java設定クラスを介してSpring MVCサポートを有効にするには、** __ EnableWebMvcアノテーションを追加するだけです。

@EnableWebMvc
@Configuration
public class ClientWebConfig {

   ///...
}

これにより、コントローラやマッピングの登録、型変換、検証サポート、メッセージ変換、例外処理など、MVCプロジェクトに必要な基本サポートが設定されます。

  • この設定をカスタマイズしたい場合は、 WebMvcConfigurer インターフェースを実装する必要があります。

@EnableWebMvc
@Configuration
public class ClientWebConfig implements WebMvcConfigurer {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
      registry.addViewController("/index");
   }

   @Bean
   public ViewResolver viewResolver() {
      InternalResourceViewResolver bean = new InternalResourceViewResolver();

      bean.setViewClass(JstlView.class);
      bean.setPrefix("/WEB-INF/view/");
      bean.setSuffix(".jsp");

      return bean;
   }
}

この例では、 /WEB-INF/view ディレクトリから .j​​sp 個のビューを返す ViewResolver Beanを登録しました。

ここで非常に重要なのは、__ViewControllerRegistryを使用して** URLとビュー名の間の直接マッピングを作成するView Controllerを登録できることです。このように、2つの間にControllerは必要ありません。

コントローラクラスも定義してスキャンしたい場合は、コントローラを含むパッケージに @ ComponentScan アノテーションを追加できます。

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = { "com.baeldung.web.controller" })
public class WebConfig implements WebMvcConfigurer {
   //...
}

この設定をロードするアプリケーションをブートストラップするために、イニシャライザクラスも必要です。

public class MainWebAppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(final ServletContext sc) throws ServletException {

        AnnotationConfigWebApplicationContext root =
          new AnnotationConfigWebApplicationContext();

        root.scan("com.baeldung");
        sc.addListener(new ContextLoaderListener(root));

        ServletRegistration.Dynamic appServlet =
          sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext()));
        appServlet.setLoadOnStartup(1);
        appServlet.addMapping("/");
    }
}

Spring 5より前のバージョンでは、インターフェースの代わりに WebMvcConfigurerAdapter クラスを使用する必要があります。

3 XML設定を使用したSpring MVC

上記のJava設定の代わりに、純粋なXML設定を使用することもできます。

<context:component-scan base-package="com.baeldung.web.controller"/>
<mvc:annotation-driven/>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:view-controller path="/" view-name="index"/>

</beans>

純粋なXML構成を使用したい場合は、アプリケーションをブートストラップするための web.xml ファイルも追加する必要があります。このアプローチの詳細については、https://www.baeldung.com/spring-xml-vs-java-config[以前の記事]をチェックしてください。

4コントローラとビュー

基本的なコントローラーの例を見てみましょう。

@Controller
public class SampleController {
    @GetMapping("/sample")
    public String showForm() {
        return "sample";
    }

}

そして対応するjspリソースは sample.jsp ファイルです。

<html>
   <head></head>

   <body>
      <h1>This is the body of the sample view</h1>
   </body>
</html>

JSPベースのビューファイルはプロジェクトの/ WEB-INF フォルダにあるため、直接アクセスするのではなくSpringインフラストラクチャにのみアクセスできます。

5起動時のSpring MVC

Spring BootはSpring Platformに追加されたもので、非常に簡単に作業を開始してスタンドアロンの実稼働グレードのアプリケーションを作成できます。

Boot はSpringに代わるものではありませんが、Springでの作業をより早く簡単にするためのものです。

5.1. Spring Bootスターター

  • 新しいフレームワークは、便利なスターター依存関係を提供します。これは、特定の機能に必要なすべてのテクノロジーを取り込むことができる依存関係記述子です。

これらには、依存関係ごとにバージョンを指定する必要がなくなり、スターターが依存関係を管理できるようになるという利点があります。

最も手早く始める方法はhttps://search.maven.org/classic/#search%7Cga%7C1%7Ca%3A%22spring-boot-starter-parent%22 pom.xml:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

これは依存関係管理の面倒を見ます。

** 5.2. 春のブートエントリポイント

**

Spring Boot を使用して構築された各アプリケーションは、メインエントリポイントを定義するだけで済みます。これは通常、 @ SpringBootApplication というアノテーションが付けられた main メソッドを持つJavaクラスです。

@SpringBootApplication
public class Application {
    public static void main(String[]args) {
        SpringApplication.run(Application.class, args);
    }
}

この注釈は以下の他の注釈を追加します。

  • @ Configuration - クラスをBeanのソースとしてマーク

定義 ** @ EnableAutoConfiguration - フレームワークにBeanの追加を指示します

クラスパスへの依存関係に自動的に基づく ** @ ComponentScan - 他の設定とBeanを探します。

Application クラス以下と同じパッケージ

Spring Bootでは、セクション3で定義されているように、ViewResolverを使わずにThymeleafまたはJSPを使ってフロントエンドを設定できます。

Bootアプリのソースコードは、いつものようにhttps://github.com/eugenp/tutorials/tree/master/spring-boot-bootstrap[over on GitHub]から入手できます。

最後に、もしあなたがSpring Bootを始めようと思っているなら、私たちのリンクを見てください:/spring-boot-start[ここで紹介のイントロ]。

6. 結論

この例では、Java構成を使用して、シンプルで機能的なSpring MVCプロジェクトを構成しました。

この簡単なSpring MVCチュートリアルの実装はhttps://github.com/eugenp/tutorials/tree/master/spring-mvc-java[GitHubプロジェクト]にあります - これはEclipseベースのプロジェクトなので、そうするべきです。そのままインポートして実行するのは簡単です。

プロジェクトがローカルで実行されているときは、 _ sample.jsp にアクセスできます。 http://localhost:8080/spring-mvc-java/sample._