Java/Language
굳이 필요한 게 아니면 enum에 toString() 을 구현하지 않는다.
허니몬
2015. 4. 22. 16:16
스프링시큐리티의 GrantedAuthority 인터페이스를 enum 타입으로 구현했는데, 이 구현체에 toString() 을 선언하면서 의도와는 다르게 동작하는 문제가 발생했다.
이런 코드인데, toString()
code, key, order 에 대한 내용을 출력하도록 만들면...MemberAuthority[code="project", key="code.memberAuthority.administrator", order=1]
의 형태로 나오게 된다. 스프링시큐리티에서는 권한을 문자열로 받기에 ADMINISTRATOR
으로 나와야하는데... 전혀 다른 형태가 되어버리니 권한 체크가 제대로 되지 않을 수밖에...
○ 정리
- enum 타입에 대해서
toString()
을 적용할 때는 잠시만 고심해보자.