top / index / prev / next / target / source

2017-04-03 diary: [Spring] Spring Framework 再入門

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

[Spring] Spring Framework 再入門

数年間のブランク(?)を経て、あらためて Spring Framework に取り組むことになりました。とりあえず私が取り組むのは Spring Frameworkです。結果的には Spring Boot も触る予定ですが、まずはシンプルに Spring Framework を見ていきます。

必要な諸元は以下の通りです。

はじめてみよう

まずは 本家の Spring Framework の記載に従って、素朴にチュートリアルを進めていきます。

Spring を利用する Mave プロジェクトの新規作成

Maven プロジェクトの新規作成。

cd /tmp
mvn archetype:generate -DgroupId=my.spring -DartifactId=MySpringApp -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Maven 依存関係に Spring Framework を追加。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.3.11.RELEASE</version>
    </dependency>

spring-context を利用してみる

まずはチュートリアル通りに。なおコードは コピペせずに手で書いて いく(これは写経とも呼ばれるプログラミング入門の基本所作)

最初に作成するデータ構造は、 アノテーション抜きのシンプルなインタフェースですね。

package hello;

public interface MessageService {
    String getMessage();
}

次にこれを利用するクラスです。 @Component および @Autowired というアノテーションが利用されます。

package hello;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class MessagePrinter {
    final private MessageService service;

    @Autowired
    public MessagePrinter(MessageService service) {
        this.service = service;
    }

    public void printMessage() {
        System.out.println(service.getMessage());
    }
}

次はアプリケーションです。 @Configuration, @Bean, @ComponentScan というアノテーションが利用されます。

package hello;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
public class Application {
    @Bean
    MessageService mockMessageService() {
        return new MessageService() {
            public String getMessage() {
                return "Hello World.";
            }
        };
    }

    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
        MessagePrinter printer = context.getBean(MessagePrinter.class);
        printer.printMessage();
    }
}

これらは、ありし日の Spring にて XML に記載していた内容が XML を省略して代わりにコードに記載可能になったやつですね。

また、あらためて確認してみて、Spring 学習には Spring API の Javadoc の確認は非常に有益だと感じました。英語が苦手な方も、Google Chrome の翻訳機能などを活用したら日本語で読むことが可能ですので、こちら Javadoc を都度確認することを おすすめしたいです。

Last modified: $Date: 2017-09-15 $

登場キーワード


この日記について