인프런 커뮤니티 질문&답변
AccountContext 관련 질문이 있습니다.
작성
·
207
0
강사님 강의 잘 듣고 있습니다. 엔티티를 직접적으로 노출시키는 것을 방지하는 것 외에도, User 클래스의 중요한 기능들을 편리하게 사용하기 위해 AccountContext라는 객체를 사용하는 것도 맞는 이야기인가요? 가령 관련 소스를 찾기 위해 블로그를 뒤져봤는데, isAccountNonExpired나 isAccountNonLocked와 같은 메소드들을 Domain단에 불필요하게 override하는 코드들도 많이 봐왔습니다. 이러한 부모의 주요 및 부가 기능들을 상속을 통해서 깔끔하게 사용하기 위함으로 봐도 괜찮을까요?
답변 1
1
네
그런 의미도 포함되어 있습니다.
사실 UserDetails 타입으로 반환하기 위해 AccountContext 를 생성하고 있고 내부 필드로 Account 엔터티를 포함하고 있는 구조인데 만약 Account 가 엔터티가 아닌 일반 객체라고 한다면 굳이 AccountContext 없이 Account 클래스를 UserDetails 타입으로 구현해서 사용하셔도 크게 상관없습니다.
다만 하나의 클래스에 두개의 책임을 전가하는 것이 객체지향 관점에서 그렇게 좋은 구조가 아니기 때문에 AccountContext 와 Account 를 별도로 생성해서 각각의 역할을 하도록 구현한 것이라고 보시면 되겠습니다.
그리고 isAccountNonExpired 와 같은 메서드는 필요 시 구현하는 것이기 때문에 위의 내용과 직접적인 관련이 있는 것은 아닙니다.
실제로 isAccountNonExpired 와 같은 메서드를 용도에 따라 구현하는 케이스도 간간히 있습니다.




