0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

昨今AIエージェントやMCP使用で話が持ちきりだと思われるが、今まで既出の復習になる。
JavaのSpringについて特に予定はないが、Java案件に関わるときはよく聞く名前なので見直した。PHPのフレームワークLaravelと比較してみた。

Spring Bootについて

よくSpring Bootというのを聞く。
Spring Boot は Spring の設定を自動化・簡略化したもので、実はカスタマイズも可能です。

例えるとSpring はレゴブロックのように「全部自分で組み立てる」、Spring Boot は「ある程度組み上がったスターターキット」があって、すぐに遊べるようにしてくれている、ようなものです。

Spring と Spring Boot の比較

項目 Spring(Spring Framework) Spring Boot
定義 Javaアプリケーションのための汎用フレームワーク Springをより素早く、簡単に使えるようにした拡張フレームワーク
設定 XMLやJava Configなどで多くの設定が必要 **自動構成(AutoConfiguration)**により、最小限の設定で開始可能
起動方法 Tomcatなどのサーバにデプロイして実行 組み込みサーバ(Tomcatなど)で単体起動可能java -jar
学習曲線 柔軟で強力だが、学習コストが高い 開発がスピーディーで導入しやすい
カスタマイズ性 細かく設定可能で大規模システム向き デフォルト設定に従えば楽だが、カスタマイズも可能

Spring Bootの特徴:

  • Webアプリが1コマンドで起動する(java -jar で実行可能)
  • @RestController@SpringBootApplicationなどのアノテーションで簡単に設定
  • 組み込みのTomcatで起動(Tomcatの設定不要)
  • application.propertiesapplication.yml で設定管理

📌 よく使うアノテーション

アノテーション 用途
@Component, @Service, @Repository DI対象のクラスとして登録
@Autowired 自動的に依存関係を注入
@RestController REST APIのコントローラ
@RequestMapping, @GetMapping など URLへのマッピング
@Entity JPAでDBテーブルに対応するエンティティ定義
@SpringBootApplication アプリケーションのエントリーポイント

開発の流れ

ざっくり以下で簡易に試せる。

  1. Spring Initializrでプロジェクト作成(https://start.spring.io)
  2. コントローラ、サービス、リポジトリ層の実装
  3. エンティティ(@Entity)とDB接続設定
  4. ビルドして実行(mvn spring-boot:run など)

アノテーション

アノテーションを、Laravelの構文と役割の対応関係で考えるとイメージしました。
アノテーション(例:@Controller, @Autowired)は、
Laravelで言えば「特定の役割を示すための記述」や「自動処理を司る仕組み」と似ています。

Springのアノテーション vs Laravelの記述方法 対比表

Spring アノテーション Laravel のイメージ・対応
@Controller or @RestController Laravelの Route::get() でコントローラを指定する(UserController@indexなど)
@Service, @Component, @Repository Laravelの Serviceクラス, Repositoryパターン, Containerへの登録
@Autowired Laravelの 自動依存注入(コンストラクタインジェクション)
例: __construct(UserService $service)
@RequestMapping("/hello")
@GetMapping("/hello")
Laravelの Route::get('/hello', [Controller::class, 'method'])
@Entity + @Table(name="users") Laravelの User.php モデル + $table = 'users';
@Column(name="email") Laravelの $fillable = ['email']; のようなフィールド指定
@SpringBootApplication Laravelの AppServiceProviderbootstrap/app.php(アプリ起動設定)

🔍 具体例:コントローラ比較

Laravel のコントローラ

class UserController extends Controller {
    public function index() {
        return view('user.index');
    }
}
Route::get('/users', [UserController::class, 'index']);

Spring Boot のコントローラ(アノテーション)

@RestController
public class UserController {

    @GetMapping("/users")
    public String index() {
        return "user index page";
    }
}
  • @RestController:このクラスはREST APIを返す
  • @GetMapping("/users"):URL /users にマッピング

LaravelとSpringの違いの捉え方

観点 Laravel Spring
宣言方法 関数呼び出しやサービスバインディング アノテーションでメタデータを付加
処理の流れ フレームワークが自動で依存注入 フレームワークがアノテーションを解析して自動処理
開発スタイル Laravelらしく明示的な書き方 Springは宣言的・抽象的な書き方が多い

Springではアノテーションを付けるだけで多くの処理が自動化されるため、
フレームワークにどう動かしてほしいかを宣言する」という感覚です。

Laravelは記述的、Springは宣言的というイメージです。

おわりに

JavaとLaravelを比較すると、他色々確認したいことが出てきたので、また確認してみようと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?