분류 전체보기20 인터페이스로 확장하는 Java Enum - enum class implements Interface Java에서 enum을 사용할 때, 부모-자식 클래스의 관계 처럼 연관관계를 만들 수 있을까? enum은 암묵적으로 java.lang.Enum을 상속받기 때문에, 다중상속은 불가능하므로 다른 클래스를 상속받을 수는 없다. 하지만 인터페이스를 implements 한다면 가능하다. 프로젝트에 적용한 예시를 살펴보자. 멀티모듈 프로젝트에서 각 모듈별로 사용하는 에러코드를 공유하기 위해 BaseErrorCode라는 인터페이스를 만들고, 각 모듈별 에러코드 enum이 BaseErrorCode를 implements하여 모듈간 에러코드를 공유할 수 있도록 작성하였다. 이러한 접근 방식의 장점은 각 모듈이 독립적으로 에러코드를 관리할 수 있으면서도, 공통된 인터페이스를 통해 일관성을 유지할 수 있다는 점이다. Base.. 2024. 1. 28. [데브코스] 1월 3주차 회고 - 중간방학, 팀 프로젝트 발표회, 해커톤 팀 프로젝트 기간이 끝나고 이틀간의 방학동안 푹 쉬고 놀았다. 이번주는 aws 강의를 들어야 했고, 팀 프로젝트 발표회가 있었다. 감을 잡았다고 생각했는데 아직도 모르는게 많다 발표회 전날 우리팀은 프로젝트하면서 겪었던 문제에 대해 각자 기술회고를 작성하고, 공유하는 시간을 가졌다. 나는 이번 프로젝트에 적용한 시큐리티 관련 내용을 공유했다. 그런데 다른 친구가 발표한 내용과 관련하여 시큐리티를 수정해야 할 일이 생겼는데, 또 내가 잘 모르겠는 분야였어서 제대로 해결하지 못했다. 그리고 내가 참고한 깃허브 프로젝트가 best pracitce가 아니라 오히려 bad practice에 가까웠다. 무려 1100개 이상의 스타를 받은 레포지토리임에도 불구하고 스프링에서 제시하는 방향과는 많이 다르게 작성되어 있.. 2024. 1. 22. 빙터파크 팀 프로젝트 회고 [좋았던 점 & 잘한 점] 멀티 모듈로 분리하여 각자 맡은 도메인에 집중할 수 있었고, 코드 충돌도 적게 일어났다. 프로젝트 관리를 깃허브와 노션 두가지로 한정하여 효율적이었다. 툴이 많아지면 확인해야 할 것도 많아지는 것 같다. 나와 내 파트너는 적극적으로 코드리뷰를 해주었고, pr 메시지도 친절하게 작성해주어 성공적인 코드리뷰를 할 수 있었다. 파트너와 각자 책임을 맡은 부분에서 최선을 다하되, 막히는 부분이 있을 때 의견을 구하고 다양한 방면으로 생각해 볼 수 있어서 유익했다. 파트너와 매일 아침 간단하게 오늘 해야 할 일에 대해 브리핑하면서 막힌 부분은 어디인지, 어떤 점을 고민하고 있는지를 서로 공유하고 노션에 기록했다. 노션을 거의 연습장 수준으로 써놔서 정돈되지는 않았지만, 그동안 고민한 포.. 2024. 1. 18. Spring Security 멀티 필터체인으로 철벽 보안 구성하기 - multiple SecurityFilterChain, multiple Spring Security Configurations [서론] 빙터파크 프로젝트는 멀티 모듈 구조로 되어 있으며, 각 모듈의 API 서버가 독립적으로 운영된다. 이 구조에서 중요한 역할을 하는 것이 core-security 모듈인데, 이 모듈은 우리 서버로 들어오는 모든 API 요청의 수문장 역할을 한다. 이 글에서는 이러한 보안 설정의 핵심 요소인 SecurityFilterChain들을 소개하고, 각각이 어떻게 우리 시스템을 지키는지 설명하고자 한다. [본문] 우리의 보안 체계를 네 명의 문지기 비유로 설명해보자. 이 네 명의 문지기 중 어느 문지기에게 갈지 결정하는 것은 대왕 문지기, 즉 FilterChainProxy이다. 이 대왕 문지기는 먼저 당신이 어느 엔드포인트로 가고자 하는지 묻는다. 그리고 당신의 응답에 따라 적절한 문지기에게 당신을 안내한다.. 2024. 1. 17. [데브코스] 1월 2주차 회고 - 팀 프로젝트 마지막 스프린트 팀 프로젝트의 마지막 스프린트 기간을 보냈다. 이번주에 한 주요 작업은 - 공통 BaseErrorCode 정의 - SecurityFilterChain 분리 작업, 리팩터링 - Swagger 문서화 - .http 로 통합테스트 준비 정도인데, 특히 SecurityFilterChain을 리팩터링하면서 무한 디버깅의 늪에 빠지는 경험을 했다. 1. 시큐리티 개선 (feat. 공식문서) https://docs.spring.io/spring-security/reference/servlet/architecture.html 그동안 구현에 급급했기에 내가 만든 클래스가 각각 어떤 역할을 하는지 100% 이해하지 못한 상태였다. 낮에 마신 커피 때문에 잠을 설치다가, 우연히 스프링 시큐리티 공식문서에 설명된 아키텍쳐 설.. 2024. 1. 17. [데브코스] 1월 1주차 회고 새로운 한 해가 밝았다. 데브코스를 시작한지도 벌써 5개월차가 되었다 그동안 뭔가 정신없이 보내왔지만 기록을 하지 않았더니 뭘했는지 기억이 가물가물해진다.. 기록이 매우 소중한 자산이라는 걸 알기에 지금부터라도 기록해보려한다! 스프링 시큐리티 뽀개기 팀 프로젝트가 한창이다. 이번 스프린트에서 나는 스프링 시큐리티를 적용했다. 스프링 시큐리티에 대한 막연한 두려움이 있었는데, 다른 사람 코드도 많이 보고, 이것저것 고쳐보고, 고민도 해보면서 두려움은 조금 없어졌다. 용어가 낯설어서 처음에는 정말 전혀 이해할 수 없었지만 이제는 각 용어가 어떤 역할을 하는지 이해하게 되었다. 시큐리티 관련해서 내가 이해한 내용을 정리해보고 싶다. 회의는 명확하고 간결하게 성공적인 회의는 두 가지가 전제되어야 하는 것 같다... 2024. 1. 7. 이전 1 2 3 4 다음