Bean

스프링이 관리하는 POJO 객체를 의미, <bean>을 정의함으로서 스피링이 관리할 객체를 지정해 줄 수 있음

Bean 설정은 xml 파일 혹은 애너테이션으로 설정 할 수 있음

POJO : 평범한 옛 자바 객체

 

 

예시

먼저 User 클래스와, Computer 클래스를 만들고 필드를 이렇게 지정 후, getter setter, 생성자, ToString을 만든다.

 

 

 

 

AppConfig 클래스를 만든 후, @Configuration 이라는 에너테이션을 붙힌다. 이는 Bean 객체를 관리하는 역할을 할 것이라는 의미를 뜻한다. 각 메서드에 @Bean 애너테이션을 부여해서 빈을 정의한다.  name으로 이름을 설정 가능하고, initMethod를 이용해 초기화 메서드를 이용할 수 있다.

 

 

 

XML로 Bean 객체를 관리할 수 있는데, 값을 넣을 경우에는 value를, 객체를 집어넣을 경우에는 ref 요소를 사용한다. 그리고 lazy-init 요소가 보이는데, 이는 나중에 생성할 Bean 객체라는 것을 의미한다.

 

 

 

Bean을 획득하는 방법.. 먼저 생성한 MyApplication 클래스에 메인을 만들고, 그 안에서 출력을 하려고 한다. 어노테이션에서 불러올 경우와 xml 경로로 불러올 경우가 각각 다르다.

 

 

DI에서 Bean을 가져올 때, 같은 타입의 Bean이 여러개 있을 경우 Bean의 이름과, 타입을 파라미터에 넣는다. 하지만, 지정한 타입에 해당하는 Bean이 오직 하나만 있을 경우 Bean의 이름은 파라미터에 넣지 않아도 된다.

 

 

 

다음과 같이 출력된다. xml-user는 lazy-init = "true"로 설정했기 때문에 context GET 완료 후에 생성된다. 

 

 

 

 

DI 컨테이너에 등록된 빈은 자동으로 Singleton으로 생성된다. 

+ Recent posts