@Controller、@Service、@Repository、@ComponentSpringのアノテーション、@Controller、@Service、@Repository、@Componentの4つなのだけれど、いまいち動きの違いがよく分からなかったので調べてみた。基本的には同じ動きをするらしく、これらのアノテーションが付与されたクラスをSpringのDIコンテナにビーンとして登録する。コントローラ層には@Controller、サービス層には@Serviceというふうになる。アノテーションを見れば役割が分かるので、見た目には分かりやすいではある(それ以上の理解が出来なかった)。@Controllerコントローラ層のクラスに付与する。リクエストやレスポンスなどのフロントとのやり取りに関わる処理を記述するクラスがこのアノテーションを使用する。@Serviceサービス層、つまりビジネスロジックなどが記述されるクラスに使用する。@RepositoryDAOなどのDBアクセスを担うクラスに使用する。@Component上記の3つ以外の役割でDIコンテナに登録しておきたいクラスに使用する。トランザクションの管理Springでは@Transactionアノテーションを使うと簡単にトランザクションの管理を行える。プログラミングによって管理をすることも出来るが、この記事では@Transactionアノテーションについて書いていくことにする。}}上記のようにクラスに@Transactionアノテーションを付与すると、そのクラス内のすべてのメソッドがトランザクション制御されることになる。メソッド単位でトランザクション制御したい場合は下記のようにメソッドに@Transactionアノテーションを付与する。@ServiceアノテーションSpringでサービスレイヤを扱うクラスには@Serviceアノテーションをつける。業務プロセスを表現するのだけれど、@Serviceクラスの働きについてはいまいち理解していなかった。おまじないのようにつけて、それでも動作してしまうものだから気にしてこなかったのだ。調べてみたら、@Serviceアノテーションが設定されると、クラスがDIコンテナへの登録対象となるらしいことが分かった。使いかたは以下のようになる。サービスクラスがDIされる。Bootではクラスパス直下のdata.sqlが起動時に実行されるらしい。src/resources/data.sqlにSQLを記述して実行してみた。初期データ投入が手軽になるなあ、と思っていたのだけれど上手く動いてくれない。SQL実行ツールでSQLを実行すると正常に動作したので、記述したSQLそのものに不備があるわけではなさそうだ。Yamazaki株式会社アクティアで働くプログラマ。