스프링 빈(Bean)이란?
간단히 말해서 스프링 컨테이너가 관리하는 자바 객체를 빈이라고 합니다.
빈은 다음과 같은 특징을 가집니다.
new 키워드 대신 사용: 빈을 사용하면 직접 new 키워드를 사용하여 객체를 생성할 필요 없이 스프링 컨테이너가 자동으로 객체를 생성하고 관리해줍니다.
결합도 낮추기: 빈을 사용하면 코드 간의 결합도를 낮출 수 있습니다. 코드에서 직접 객체를 생성하는 대신 빈을 통해 객체를 참조하기 때문에 코드 변경이 용이해집니다.
싱글톤: 기본적으로 빈은 싱글톤 패턴으로 생성됩니다. 즉, 같은 id를 가진 빈은 컨테이너 내에 하나만 존재하며, 여러 번 요청해도 같은 객체를 반환합니다.
다양한 속성: 빈에는 init-method, lazy-init, scope 등 다양한 속성을 설정할 수 있습니다.
빈의 예시
다음은 빈을 사용하는 예시입니다.
XML
<bean class="test.Phone" id="phone"/>
<bean class="controller.common.HandlerMapper" id="handler"/>
<bean class="controller.action.MainAction"/>
코드를 사용할 때는 주의가 필요합니다.
1. Phone 객체 생성
위 코드는 test.Phone 클래스의 객체를 phone이라는 id로 빈에 등록합니다.
이후 phone id를 사용하여 Phone 객체를 참조할 수 있습니다.
2. HandlerMapper 객체 생성
controller.common.HandlerMapper 클래스의 객체를 handler id로 빈에 등록합니다.
3. MainAction 객체 생성
controller.action.MainAction 클래스의 객체를 빈에 등록합니다.
빈의 장점
코드 간결화: new 키워드를 사용하지 않아 코드가 간결해집니다.
결합도 낮추기: 코드 간의 결합도를 낮춰 유지 관리가 용이해집니다.
싱글톤 패턴: 싱글톤 패턴을 쉽게 적용할 수 있습니다.
다양한 속성: 빈의 속성을 통해 객체 생성 및 관리를 더욱 유연하게 설정할 수 있습니다.
빈의 주의점
id 중복 금지: 빈의 id는 컨테이너 내에서 유일해야 합니다.
클래스 경로: 빈의 클래스 경로는 정확하게 지정해야 합니다.
싱글톤: 싱글톤 패턴은 메모리 사용량을 줄일 수 있지만, 객체 변경 시 주의해야 합니다.
지연 로딩: 지연 로딩은 성능 향상에 도움이 될 수 있지만, 객체 참조 시점에 주의해야 합니다.
스코프: 빈의 스코프를 잘못 설정하면 예상치 못한 결과가 발생할 수 있습니다.
빈의 활용
빈은 스프링 프레임워크의 핵심 개념입니다. 스프링 컨테이너에서 다양한 객체를 관리하기 위해 빈을 사용합니다. 빈을 잘 활용하면 코드의 결합도를 낮추고 유지 관리를 용이하게 만들 수 있습니다.
댓글