게시글
질문&답변
2024.10.23
파사드 패턴에 대해 질문이 있습니다.
세부적인 상황까지 말씀드리도록 하겠습니다. 현재 저는 제가 참여하고 있는 사이드 프로젝트에서 리팩토링을 담당하고 있습니다.하나의 서비스 클래스에 다양한 책임과 역할이 혼합되어 있는 것을 발견하고 이를 역할에 맞게끔 분리하였습니다.그러나 리팩토링 이후에는 하나의 컨트롤러 클래스의 메서드에서 너무 많은 서비스 클래스에 의존하고 있는 문제를 발견하였습니다.이에 대한 해결책으로 저는 아래의 방법을 도입했습니다.파사드 패턴 도입으로 의존하고 있는 서비스 클래스의 수를 줄인다.컨트롤러를 더 잘게 쪼갠다.다만 리팩토링을 하는 다른 팀원의 경우 하나의 서비스 메서드를 단순히 호출하는 경우에도 파사드 클래스를 도입하여 결과적으로 하나의 거대한 파사드 클래스가 만들었습니다.하나의 거대한 파사드 클래스 개인적으로는 무엇인가 잘못되었다는 느낌을 받았지만 파사드 패턴을 도입한 것이 이번이 처음이였으며 주변에 의견을 물어볼 곳도 마땅히 없었기에 넘어갔습니다.다만 얄코님의 디자인 패턴 강의를 보며 조언을 구하고 싶은 마음에 위와 같이 질문을 남겼습니다.저의 경우 다양한 서브 시스템을 파사드 클래스로 조합해 하나의 새로운 로직을 만듦 에 초점을 두어 파사드 패턴을 도입하였습니다. 같이 리팩토링을 진행한 팀원의 경우는 여러 서브 시스템을 생성시키고 세부 로직을 파사드 클래스에 위임 에 초점을 두어 진행하였습니다.다만 사이드 프로젝트의 기술스택은 Spring을 사용중이고 의존성 주입이 자동으로 됩니다. 또한 파사드 패턴을 도입하고자 고민하고 있는 레이어는 서비스 레이어로 이미 로직이 추상화가 되어있기에 전자의 경우만 고려하면 될 것 같다는 생각이 드는데 이에 대한 얄코님의 의견이 궁금합니다.
- 0
- 3
- 69
질문&답변
2024.10.23
파사드 패턴에 대해 질문이 있습니다.
또한 컨트롤러 클래스는 파사드 클래스와 서비스 클래스에 동시에 의존하는 것은 좋은 설계인지도 궁금합니다.
- 0
- 3
- 69
질문&답변
2024.05.20
RestAPI를 제공하는 서버에서 Redis + Session을 통해 인증을 시도하고 있는데 직렬화가 되지 않습니다.
혹시 저와 같은 문제를 겪고 계신 분들이 계실까 글을 남깁니다. 결론부터 말씀드리면 직렬화를 하고자하는 클래스(세션에 저장하고자 하는 클래스)에서 Serializable인터페이스를구현하면 됩니다. 또한 제가 공식문서에서 찾아본 결과@EnableRedisHttpSession 어노테이션을 추가할 경우 sessionRepositoryFilter 가 추가됩니다. 그리고 해당 클래스는 Session 클래스를 한번 감싼것으로 기존의 http session 관련 메소드를 오버라이딩하여 기능을 커스터마이징이 가능합니다.(저 같은 경우에는 redis를 세션 저장소로 사용)
- 0
- 2
- 260
질문&답변
2024.05.17
RestAPI를 제공하는 서버에서 Redis + Session을 통해 인증을 시도하고 있는데 직렬화가 되지 않습니다.
추가로 @EnableRedisHttpSession에 대해 궁금한 점이 있습니다. 해당 어노테이션을 사용하였을 경우 스프링이 RedisIndexedSessionRepository를 통해 Redis에 세션 저장을 자동으로 구현하는 듯한데 이는 UserNamePasswordAuthenticationFilter에서만 그런것인가요? 아니면 다음과 같이 사용자 정의 필터를 구현하고 인메모리에 세션 영속화를 하였을때도 Redis에 저장이 되는건가요?
- 0
- 2
- 260
질문&답변
2024.03.29
properties파일 혹은 yaml파일을 통해 설정 데이터를 관리하는 방법에 대해 질문이 있습니다.
찾아보니 Jasypt는 외부에서 secret key 값을 주입해 내부 설정 파일의 value를 복호화하는 방식으로 동작하던데 이외의 빙법은 따로 없을까요? 실무에서는 어떻게 하는지 궁금합니다!
- 0
- 3
- 348
질문&답변
2023.08.02
PostConstructor 관련해서 질문있습니다!
https://www.inflearn.com/questions/26902/postconstruct%EC%99%80-transactional-%EB%B6%84%EB%A6%AC영한님이 이전에 답글남겨주신 걸 바탕으로 해결했습니다!문제가 되는 이유는 해당 링크에서도 말씀하셨다시피 @PostConstructor는 빈 생성만을 완료한 이후 호출이 된다고 말씀하셨습니다.저의 경우에 대입한다면 @PostConstructor안에서 지연로딩을 이용해서 리스트를 가져오려고 할 때 @Trasactional이 있더라도 트랜잭션을 처리하는 AOP적용이 되지 않습니다.그렇기에 직접 트랜잭션을 열어서 해당 트랜잭션 내부에서 실행하니 원하는대로 @PostConstructor내부에서도 정상적으로 지연로딩이 가능했습니다!protected PlatformTransactionManager txManager; TransactionTemplate tmpl = new TransactionTemplate(txManager); tmpl.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { //PUT YOUR CALL TO SERVICE HERE } });++ 직접 트랜잭션을 열어도 @Trasactional 처럼 해당 메서드 안에서 호출되는 다른 메서드까지는 트랜잭션이 이어지지는 않는듯 합니다!
- 0
- 2
- 458
질문&답변
2023.04.07
jpa설정하는데 자꾸 Socket faul to connct to host라고 나옵니다.
ec2방화벽 문제였습니다 ㅠㅠ... 감사합니다!
- 1
- 2
- 294
고민있어요
2023.02.21 00:01
안녕하세요 해당 강의를 보고 토이프로젝트를 진행하다 궁금한 점이 생겨 질문드립니다.
- 0
- 1
- 464
질문&답변
2022.02.14
application.yml이 아닌 application.properties 쓰시는 분은 이거 쓰시면 됩니다!
적게일하고 많이 버세요...ㅠㅠㅠ
- 12
- 5
- 548
고민있어요
2022.02.14 19:37
혹시 SpringBoot를 못찾았다고 에러뜨시는 분들 참고하세요!
- 0
- 1
- 208