yeoseon / tip-archive

트러블 슈팅 및 팁을 모아두는 레포 (Today I Learned)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bean] Bean은 멤버변수를 가질 수 없다. (무상태여야한다.)

yeoseon opened this issue · comments

원시 타입(Primitive Type) 을 멤버로 사용시 상수 형태만 사용가능 합니다.

  • 멤버변수는 되도록 private 으로 선언하는 것이 좋다. 그렇지 않으면 전역변수의 역할이나 다름이 없다.
  • 원시 타입의 변수는 상수 형태로만 사용하는 것이 좋다.

해결

  • 해당 변수를 매개변수로 전달하는 방싱글 고려한다.
  • 추상화를 통해 변수를 캡슐화 한다.

설명

Bean은 멤버변수를 가지면 안된다.

Bean으로 설정된 클래스는, JVM이 기동시에 Bean을 로딩해둔다.
해당 Bean을 호출해서 사용하는 동안 Bean의 멤버변수가 예를들어 3으로 바뀌었다고 했을 때,
그 순간 다른 곳에서도 해당 Bean을 호출하게 되면 그 3의 값으로 돌아가게 된다.
Bean은 여기저기서 사용하기 때문에 멤버변수를 가질 수 없다.
멤버변수를 가진다는 것은 데이터를 가진다.
멤버변수를 가지지 않는다는 것은 기능만 가진다는 말로도 표현할 수 있다.

Reference