[ 최종 수정일 : 2023년 09월 20일 ]
자바빈즈의 표준 스펙에 대한 발행글입니다.
스펙에서 클래스 선언시, 아래와 같은 조건에 맞추어 선언된 클래스를 " 자바빈즈(JavaBeans) 클래스"라고 합니다.
이 클래스로부터 생성된 객체를 "자바빈(JavaBean) 컴포넌트, 자바빈, 빈" 다양하게 불리고 있습니다.
다음은 자바 빈즈의 특징입니다.
- 모든 필드는 private 접근제한자로 캡슐화(은닉화)해야 합니다.
- 각 필드별로 Getter/Setter 메서드를 가져야 합니다.
- 매개변수 없는 기본 생성자(Default Constructor)를 가지고 있어야 합니다.
- POJO 클래스이어야 합니다.
- [ Optional ] Serializable 태그 인터페이스를 implements해야 합니다.
자바 빈즈는 은닉화된 필드를 감추고 속성(property)만 외부에 노출시킵니다.
즉, 외부에서 빈 객체를 볼 때, 노출된 Getter/Setter 메서드에 의해 속성이 보이게 됩니다.
여기서 속성(Properties)이란,
카멜 기법이 적용된 Getter/Setter의 메서드에서 접두사(set, get)을 떼어내고 남은 메서드 이름이 속성으로 취급됩니다.
자바 빈즈 클래스는 다음과 같이 작성됩니다.
@NoArgsConstructor
public class Person {
private String name;
private Integer age;
// 속성은 set을 제거한 'Name'
public void setName(String name) {
this.name = name;
} // setName
// 속성은 get을 제거한 'Name'
public String getName() {
return this.name;
} // getName
// 속성은 set을 제거한 'Age'
public void setAge(String Age) {
this.Age = Age;
} // setAge
// 속성은 get을 제거한 'Age'
public String getAge() {
return this.Age;
} // getAge
} // end class
스프링에서 취급하는 클래스는 모두 자바 빈즈 스펙에 따라 만들어집니다.