자바빈 규약

Elenaljh·2023년 7월 21일
0

토막지식

목록 보기
2/5

1. 자바빈(JavaBean)이란?

  • 자바빈 규약에 따라 만들어진 클래스를 의미한다.

2. 자바빈 규약

자자빈 규약에는 다음과 같은 규칙들이 있다.

1. 자바빈은 특정 패키지에 속해 있어야 한다.

⭕기본패키지에 속한 자바빈

public class BeanSample {
	이러면 안됩니다
}
  • 위와 같이 소속 패키지가 없으면 안됨!

❌특정 패키지에 속한 자바빈

package hello.spring;

public class BeanSample {
	패키지에 속해있어야 한다
}

2. 기본 생성자가 존재해야 한다.

자바빈은 다음과 같이 오버로딩되지 않은, 매개변수 값이 없는 기본 생성자가 존재해야 한다.

메소드 오버로딩: 매개변수의 개수나 타입을 달리 하여 같은 이름의 메소드를 중복하여 정의하는 것
생성자 오버로딩: 매개변수를 달리하여 생성자를 두 개 이상 구현하는 것

⭕기본 생성자만 존재

package hello.spring;

public class BeanSample {
	public BeanSample() {}
}

❌생성자 오버로딩

package hello.spring;

public class BeanSample {
	public BeanSample() {}
    public BeanSample(Member member) {}
}

3. 멤버변수의 접근제어자는 private로 선언되어야 한다.

  • 멤버변수는 직접 접근할 수 없도록 private으로 선언한다.
package hello.spring;

public class BeanSample {
	private String beanProperty;
    
    public BeanSample() {}
}

4. 멤버변수에 접근 가능한 getter와 setter 메서드가 존재해야 한다.

  • 메서드 작명 규칙
    • getter: get멤버변수이름 ex. getBeanProperty()
    • setter: set멤버변수이름 ex. setBeanProperty()

4.1. getter과 setter은 public으로 선언한다.

package hello.spring;

public class BeanSample {
	private String beanProperty;
    
    public BeanSample() {}
    
    public String getBeanProperty() {
    	return beanProperty;
    }
    
    public void setBeanProperty(String beanProperty) {
    	this.beanProperty = beanProperty;
    }
}

4.2. 멤버변수가 배열인 경우

  • 이 경우 두 가지 방법으로 getter/setter을 만들 수 있다.

일반적인 경우

package hello.spring;

public class BeanSample {
	private String[] beanProperty;
    
    public BeanSample() {}
    
    public String[] getBeanProperty() {
    	return beanProperty;
    }
    
    public void setBeanProperty(String[] beanProperty) {
    	this.beanProperty = beanProperty;
    }
}

특수한 경우: 배열의 일부 값을 가져오거나 일부 값을 설정

public String getBeanProperty(int index) {
	return beanProperty[index];
}
    
public void setBeanProperty(String beanProperty, int index) {
	this.beanProperty[index] = beanProperty;
}

5. 직렬화 되어 있어야 한다. (선택사항)

  • 객체 직렬화: 객체를 입출력에 사용할 수 있도록 객체의 멤버들을 바이트 형태로 변환시키는 것
  • java.io.Serializable 인터페이스를 상속하여 직렬화할 수 있다.
  • Marshalling/Unmarshalling
    • Marshalling: 객체를 바이트 스트림으로 변환하는 것
    • Unmarshalling: 바이트 스트림을 객체화하는 것
package hello.spring;
 
import java.io.Serializable;
 
public class BeanSample implements Serializable {
     
     private static final long serialVersionUID = 1679166037496682065L; //이걸 뜻하는 것 같음
     
     private String beanProperty;
 
     public BeanSample(){}
 
     public String getBeanProperty() {
           return beanProperty;
     }
 
     public void setBeanProperty(String beanProperty) {
           this.beanProperty = beanProperty;
     }
     
}

출처

Dololak

0개의 댓글