0. Intro
Spring 공식 문서에서 Bean에 대한 정의를 읽으면서, 'Java에서 정의하는 Bean은 어떻게 다르지?'라는 궁금증이 생겼다.
Java에서 정의하는 Bean과 Spring에서 정의하는 Bean이 조금씩 다르다는 것을 알게 되었다.
Java와 Spring에서 Bean을 각각 어떻게 정의하는지 알아보자.
1. Java Bean 이란?
POJO(Plain Old Java Object)에서 몇가지 규칙들이 추가된 객체이며, DTO와 VO와 같이 데이터를 표현하기 위한 목적을 가지고 있다.
규칙은 아래와 같다.
1. 멤버필드를 프로퍼티(Property)라고 하며, 모든 프로퍼티는 private 접근 지정자여야 한다.
2. getter, setter로 private 프로퍼티(property) 멤버필드 접근해야 한다.
3. 전달 인자가 없는 public 기본생성자가 있어야 한다.
-> Class.newInstance(); 하기 위함이다.
4. 클래스는 패키지화 해야 한다.
5. Serializable Interface를 구현해야한다.
2. Spring Bean 이란?
Spring IoC 컨테이너가 관리하는 Java 객체이다.
즉, Spring IoC 컨테이너가 객체를 생성하고, 의존성을 주입(DI)하는 등의 관리를 하는 대상 객체로, 개발자가 관리하지 않고 Spring에 제어권을 넘긴 객체를 의미한다. (제어의 역전, IoC)
추가로, Spring Bean 등록하는 방법은 아래와 같다.
1. xml에 등록
2. @Bean annotation 사용
3. @Component annotation 사용
3. 결론
Bean이 Java와 Spring에서 각각 '몇가지 규칙에 따르는 순수 Java 객체', 'Spring 프레임워크에 제어권을 넘긴 객체'라고 정의한 것을 알아보았다. 둘다 Java 객체이지만 어떻게 정의하고 있는지 조금씩 다르다는 것을 알아두자.
(Bean에 대한 이해도가 올라갔다! 야호!)
'java & spring' 카테고리의 다른 글
[Spring Security] csrf().disable()하는 이유는?! 그리고 CORS (3) | 2024.11.03 |
---|---|
[Design Pattern] 스프링은 어떤 디자인 패턴을 사용하고 있을까? (0) | 2024.11.02 |
[Spring] 싱글톤 레지스트리와 스프링의 IoC 컨테이너 (0) | 2024.08.20 |
[Spring] IoC 컨테이너와 Bean (0) | 2024.08.13 |