자바 빈(Java Bean)이란?
데이터를 표현하기 위한 목적을 지니고 있으며, 특정한 정보 (id, password, name, job..) 등을 가지고 있는 클래스를 표현하는 하나의 규칙이고, 이러한 규칙을 지닌 클래스를 Java Bean이라고 한다.
자바로 작성된 컴포넌트들, 즉, 클래스를 가리키는 뜻으로 사용된다.
DTO, VO 등의 형태가 Java Bean이라고 생각하면 쉽다.
Java Bean의 규약
- 반드시 클래스는 패키지화되어야 함
- 멤버 변수는 property(프로퍼티)라고 함
- 멤버 변수는 private로 지정하고, getter / setter를 통해서만 외부 접근이 가능해야 한다.
- getter / setter는 public으로 지정해야 한다.
- 인자가 없는 생성자가 존재해야 한다. (NoArgsConstructor)
예시
public class JavaBean {
// 필드는 private로 선언
private String bean;
private int beanValue;
// 전달 인자가 없는(no-argument) 생성자
public AboutJavaBean() {}
// getter
public String getBean() {
return beanName;
}
public int getBeanValue() {
return beanValue;
}
// setter
public void setBean(String bean) {
this.bean = bean;
}
public void setBeanValue(int beanValue) {
this.beanValue = beanValue;
}
}
스프링 빈 (Spring Bean)이란?
스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다.
일반 Java 객체와 다른 점은 없고 스프링 컨테이너에서 관리되는 객체를 Bean이라고 부르는 것이다.
인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.
사용 이유
스프링 간 객체가 의존관계를 관리하도록 하는 것에 가장 큰 목적이 있다.
객체가 의존관계를 등록할 때 스프링 컨테이너에서 해당하는 빈을 찾고, 그 빈과 의존성을 만든다.
스프링의 제어의 역전과 의존성 주입 (IoC와 DI) : https://skroy0513.tistory.com/29
빈 등록 방법
- xml에 직접 등록
- @Bean 어노테이션을 이용
- @Component어노테이션을 이용
@Bean과 @Component의 차이
@Bean 같은 경우에는 메서드 위에 선언이 가능하고 위부 라이브러리를 빈으로 등록할 때 사용된다.
외부 라이브러리는 ReadOnly 파일로 개발자가 직접 컨트롤할 수 없다. 해당 라이브러리의 사용법대로 사용을 해야 한다.
따라서 개발자가 외부 라이브러리를 Bean으로 등록해야 한다면, 인스턴스를 생성하는 메서드를 만든 후, 그 메서드에 @Bean을 선언해 빈으로 등록할 수 있다.
@Component는 클래스 위에 선언 가능하고, 직접 컨트롤이 가능한 객체에서 사용된다.
따라서 개발자가 생성한 클래스 같이 직접 컨트롤할 수 있는 클래스들에는 @Component 어노테이션을 사용한다.
참고
https://velog.io/@coreminw/Java-Bean%EC%9D%B4%EB%9E%80
'멋진 개발자 > Java & Spring' 카테고리의 다른 글
개발자 성장 기록 61 - JVM의 실행 엔진 (Execution Engine) (0) | 2024.05.10 |
---|---|
개발자 성장 기록 55 - MyBatis의 동적쿼리 (0) | 2024.04.24 |
개발자 성장 기록 54 - JSP (0) | 2024.04.23 |
개발자 성장 기록 53 - Java의 동일성, 동등성 (0) | 2024.04.22 |
개발자 성장 기록 51 - MyBatis (0) | 2024.04.18 |