[Bean] Bean은 멤버변수를 가질 수 없다. (무상태여야한다.)
yeoseon opened this issue · comments
Yun Yeoseon (Row) commented
원시 타입(Primitive Type) 을 멤버로 사용시 상수 형태만 사용가능 합니다.
- 멤버변수는 되도록 private 으로 선언하는 것이 좋다. 그렇지 않으면 전역변수의 역할이나 다름이 없다.
- 원시 타입의 변수는 상수 형태로만 사용하는 것이 좋다.
해결
- 해당 변수를 매개변수로 전달하는 방싱글 고려한다.
- 추상화를 통해 변수를 캡슐화 한다.
Yun Yeoseon (Row) commented
설명
Bean은 멤버변수를 가지면 안된다.
Bean으로 설정된 클래스는, JVM이 기동시에 Bean을 로딩해둔다.
해당 Bean을 호출해서 사용하는 동안 Bean의 멤버변수가 예를들어 3으로 바뀌었다고 했을 때,
그 순간 다른 곳에서도 해당 Bean을 호출하게 되면 그 3의 값으로 돌아가게 된다.
Bean은 여기저기서 사용하기 때문에 멤버변수를 가질 수 없다.
멤버변수를 가진다는 것은 데이터를 가진다.
멤버변수를 가지지 않는다는 것은 기능만 가진다는 말로도 표현할 수 있다.