지금까지는 사용자가 직접 Bean을 생성해주었는데, 이번에는 Spring 프레임워크를 통해 Bean을 생성하는 방법에 대해 적어보려한다.
먼저 Configuration 클래스와 Spring 컨텍스트를 위한 코드이다.
여기서는 Spring 컨텍스트를 실행하고 모든 Bean을 초기화할 수 있다.
위에서는 @Bean 어노테이션을 통해 수동으로 Bean을 생성해주고 있는 모습이다.
우리는 Spring에게 Bean의 생성을 요청해줄 수도 있다.
표시된 16번째 줄의 PacmanGame()이라는 Bean의 생성을 요청해볼 것이다.
어떠한 클래스의 인스턴스 생성을 Spring에 요청하려면 어노테이션이 필요하다.
어노테이션이란?
클래스에게 특별한 의미와 기능을 부여하는 것
'@~' 의 형태로 쓰이며, Bean을 주입하는 등의 역할을 수행
위 코드가 Spring이 관리해줄 PacmanGame 컴포넌트이고, 3번째 줄처럼 @Component를 입력해주었다.
@Component 어노테이션은 Bean Configuration에 Bean을 등록하지 않아도 사용할 수 있게끔 해준다.
즉, Bean 클래스 자체에서 Bean 등록이 된다는 것이다!!
이를 통해 Spring은 PacmanGame의 인스턴스를 생성해주게 된다.
이렇게 등록된 Bean을 찾으려면 @ComponetScan("Bean이 존재하는 패키지")의 과정이 필요하다.
이렇게만 해주면 완료!
위 코드에 보이는 또다른 Bean 역시 같은 과정을 통해 자동으로 Bean을 생성할 수 있을 것이다. 아래처럼!
나의 경우에는 두 Bean이 같은 package에 들어있어서 @ComponentScan을 따로 추가해줄 필요가 없었지만, 다른 패키지에 있다면 추가적인 @ComponentScan이 필요할 것이다.
이렇게 해주면 진짜 완료!
맨 위의 사진과 마지막 사진을 비교해보면 코드가 정말 간단해졌다는 것을 확인할 수 있다.
생성해야할 Bean이 많으면 많을수록 정말 유용한 작업일 것이다.