자바빈 규약 사용이유
자바빈은 비주얼 툴에서 조작하는 컴포넌트 였지만 웹기반 엔터프라이즈 플랫폼이 등장하며 인기 시들해져 가게 됨. 그러나 이 규약을 사용하는 오픈 소스 기술들에 의해 계속 사용 되어 옴. 특히 jsp에서 객체를 이용하기 위해 사용. 그리고 서블릿을 사용하는 것보다 불필요한 코드를 만들지 않아도 되고 프론트에서 백앤드의 기능을 만들지 않아도 되게 되어 프론트와 백앤드를 분리하여 관리 할 수 있다.
용어
- 프로퍼티(property): 객체의 속성
- 필드(field, 맴버변수): 객체의 실제 값.
- ex> 클래스는 어떠한 프로퍼티들을 가지고 있는 객체이고 필드는 getter/setter의 대상이 되는 클래스의 변수나 상수이다.
자바빈 규약.
-1. 기본 생성자를 반드시 가지고 있어야 한다.
오버라이딩 되지 않은 기본 생성자가 필요합니다.
package com.example.demo
public class example{
example() {}
}
-2. 빈이 패키지화 되어 있어야 한다.
기본 패키지인 default패키지가 아닌 다른 패키지에 있어야 합니다.
package com.example.demo
public class example{
}
-3. 맴버 변수의 접근자는 private으로 선언한다.
직접 접근 방지를 위해 private생성자로 맴버 변수를 선언 합니다.
package com.example.demo
public class example{
private int intExample;
privat String stringExample;
}
-4. 맴버 변수에 접근가능한 getter/setter 매서드가 존재 하여야 한다.
이때 맴버변수의 첫글자는 대문자여야 합니다.
package com.example.demo
public class example{
privat String stringExample;
public getStringExample(){
return this.stringExample;
}
}
-5. getter와 setter는 접근자가 public 으로 선언되어 있어야 한다.
어느 패키지에서나 접근 가능하도록 public으로 선언합니다.
6. 직렬화가 되어야 한다.
- 객체 직렬화란 객체를출력에 사용할 수 있도록 객체의 맴버들을 바이트 형태로 변환 시키는 것.
- java.io.Serialize 인터페이스 상속하여 직렬화 가능.
- 객체 -> 바이트 스트림 = 마샬링(Marshalling) / 바이트 스트림 -> 객체 = 언마샬링
- 직렬화 이유: Java 직렬화는 자바 시스템 내부에서 사용되는 객체 또는 데이터들을 외부의 자바 시스템에서도 사용할 수 있게
바이트 형태로 변환하는것.
package com.myapp.bean;
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;
}
}
출처:https://dololak.tistory.com/133[코끼리를 냉장고에 넣는 방법:티스토리]
출처:
dolorak: https://dololak.tistory.com/133
vividswan: https://vividswan.tistory.com/entry/%EC%9E%90%EB%B0%94%EB%B9%88-%EA%B7%9C%EC%95%BD
greensky: https://greensky0026.tistory.com/245
januaryman: https://januaryman.tistory.com/106
joah.k: https://july7k.tistory.com/87
이팩티브 자바등을 공부하면서 자바빈에 관련된 부분이 나와서 공부해 보았다. EJB와 JSP시절의 JSP 관련된 규약 인것 같다. 각각 스프링과 타임리프, 리액트등을 쓰는 지금은 꼭 따라야 한다고 할 수 있지만 기본생성자 필요 규칙 같이 지금도 유용한 방식도 있는 듯 하고 또 setter를 public으로 하는게 좋을지 같은 요즘 기술로는 불필요할 수도 있는 규칙도 있는 것같다. 하지만 다양한 패턴들과 기술의 역사들을 알다보면 지금 쓰는 기술들을 왜 쓰는지 알고 적용할 수 있어 유용하니 알아두자.
필요하다면 EJB와 관련해서 더 알아보면 좋을거 같다.
인사이트킴: https://www.youtube.com/watch?v=3dg68mUIfJs
tess: https://velog.io/@tess/ejb%EC%9D%98-%EB%93%B1%EC%9E%A5