register() 와 boot() 메서드 비교
Laravel의 ServiceProvider에서 register()와 boot() 메서드의 주요 차이점은 실행 타이밍과 목적에 있습니다.
register() |
boot() |
|
|---|---|---|
| 설명 | 서비스 컨테이너에 서비스를 바인딩하는 데 사용됩니다. | 이미 등록된 서비스에 의존하는 작업을 실행하는 데 사용됩니다. |
| 실행 타이밍 | 모든 서비스 제공자가 등록되기 전에 실행됩니다. | 모든 서비스 제공자가 등록을 완료한 후 실행됩니다. |
| 주요 용도 | 바인딩, 싱글톤, 서비스 등 등록. | 이벤트 리스너, 라우트, Blade 지시어 등 등록. |
| 주의 사항 | 다른 서비스 제공자의 서비스를 사용해서는 안 됩니다. 아직 등록되지 않았을 수 있기 때문입니다. | 다른 서비스 제공자의 서비스를 안전하게 사용할 수 있습니다. |
사용 시나리오 예시
register() 사용
public function register()
{
$this->app->bind('App\Contracts\SomeService', 'App\Services\SomeService');
}
이 예시에서는 인터페이스를 구체적인 구현에 바인딩하여 애플리케이션 전체에서 사용할 수 있도록 합니다.
boot() 사용
public function boot()
{
\Event::listen('event.name', function ($data) {
// 이벤트 처리
});
}
여기서는 boot() 메서드에 이벤트 리스너를 등록하여 필요한 모든 의존성을 사용할 수 있도록 보장합니다.
결론
register() 메서드는 바인딩에 중점을 두는 반면, boot() 메서드는 다른 이미 등록된 서비스에 의존하는 작업을 실행하는 데 사용됩니다.
Laravel 애플리케이션을 개발할 때 이 두 가지 메서드를 올바르게 사용하면 코드의 유지 관리성과 안정성을 높일 수 있습니다.