Skip to content

Latest commit

 

History

History
80 lines (60 loc) · 4.41 KB

todo-2.md

File metadata and controls

80 lines (60 loc) · 4.41 KB

演習2 Springによるビジネスロジック開発

この演習では、ビジネスロジック層を作成します。 演習1で作成した永続化層の呼び出しや、トランザクション管理を行います。

使うプロジェクト

01-spring5

主に使うパッケージ

com.example.serviceパッケージ

TODO 2-01

CustomerServiceインタフェースは、コントローラーから呼ばれる、ビジネスロジックのインタフェースです。 メソッドが2つ定義されていることを確認してください(変更不要)。

TODO 2-02

CustomerServiceImplクラスは、ビジネスロジックインタフェースの実装クラスです。 @Serviceを付加して、ビジネスロジッククラスのBeanであることを示してください。

TODO 2-03

CustomerRepositoryのBeanを、コンストラクタでDIします。下記のように、フィールドとコンストラクタを作成してください。 今回はコンストラクタはクラス内に1つのみですので、@Autowiredは不要です。

    private final CustomerRepository customerRepository;

    public CustomerServiceImpl(CustomerRepository customerRepository) {
        this.customerRepository = customerRepository;
    }

TODO 2-04

各メソッドをトランザクション管理下にするには、@Transactionalを付加します。 こうすると、メソッド開始直前にトランザクション開始処理が割り込まれます(AOP)。 findAll()メソッドに@Transactional(propagation = Propagation.REQUIRED, readOnly = true)を付加してください。 readOnly = trueとすると、このメソッド内ではSELECT文しか発行できなくなります。

PlatformTransactionManager 実装によっては、 readOnly = true を無視するものがあります。その場合は、SELECT文以外も発行できてしまう可能性があります。

TODO 2-05

CustomerRepositoryfindAll()を呼び出し、その戻り値をreturnしてください。 このfindAll()は、Spring DataのCrudRepositoryに定義されたメソッドです。

TODO 2-06

save()メソッドに@Transactional(propagation = Propagation.REQUIRED, readOnly = false)を付加してください。 readOnly = falseとすると、INSERT文などの変更系SQLも実行できるようになります。

TODO 2-07

CustomerRepositorysave()メソッドを呼び出してください。 このsave()メソッドは、Spring DataのCrudRepositoryに定義されたメソッドです。 save()メソッドの引数には、DBに追加するCustomerインスタンスを指定してください。

TODO 2-08

ServiceConfigクラスは、ビジネスロジックやトランザクションに関するJava Configクラスです。 クラスに@Configuration を付加してJava Configであることを示してください。

TODO 2-09

@Serviceクラスをコンポーネントスキャンするアノテーションを付加します。 クラスに@ComponentScan(basePackages = "com.example.service.impl")を付加してください。

TODO 2-10

トランザクション管理を有効化します。 クラスに@EnableTransactionManagementを付加してください。

TODO 2-11

実際にトランザクション管理を行うPlatformTransactionManagerのBeanを定義します。 メソッドに@Beanを付加してください。

TODO 2-12

ServiceConfigTestクラスを実行してください。 テストがグリーンになれば成功です。レッドになった場合、ServiceConfigクラスの実装を見直してください。

TODO 2-13

CustomerServiceTestクラスを実行してください。 テストがグリーンになれば成功です。レッドになった場合、CustomerServiceImplクラスの実装を見直してください。

Well done!

これで演習2は完成です。 次の演習はtodo-3.mdに書かれています。