프로그래밍

    kafka 서버에 요청 시 TimeoutException 발생

    kafka 서버에 요청 시 TimeoutException 발생

    kafka 3.5버전 🚀 문제 상황 zookeeper 서버 실행 -> kafka 서버 실행 -> kafka 서버에 토픽이 있는지 확인 요청 -> TimeoutException zookeeper와 kafka 서버 둘 다 서버 기동 확인하고 포트번호 확인하였고, 그 후 카프카 서버에 토픽 확인 요청이나 생성 요청을 보낼 시에 찾지못하고 TimeoutException이 발생했다. 자세한 내용을 보면 "Timed out waiting for a node assignment"로 노드 할당 대기 시간 초과라고 되어있었다. 카프카 서버에 무언가 제대로 요청이 안되었음을 직감하고 stackoverflow에 검색해보았다. 🚀 해결 방법 카프카 설정폴더 안에 server.properties를 수정한다. 위 사진처럼 주석이..

    Swagger 3.0 documentationPluginsBootstrapper 에러 해결하기

    Swagger 3.0 documentationPluginsBootstrapper 에러 해결하기

    🚀 에러 발생 원인 org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 해당 에러는 SpringBoot 2.6 버전 이후 spring.mvc.pathmatch.matching-strategy 값이 ant_path_matcher에서 path_pattern_parser로 변경되면서 발생하는 오류이다. 따라서 아래와 같이 application.yml 또는 application.properties를 고치면 된다. spring: mvc: pathmatch: matching-..

    Decorator(데코레이터) 패턴이란?

    Decorator(데코레이터) 패턴이란?

    🚀 데코레이터 패턴이란? 객체에 추가 요소를 동적으로 더할 수 있는 패턴 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있음 위 그림에서는 구성 요소의 형식으로 Component를 추상 클래스로 만들었는데, 데코레이터 패턴에서는 특정한 추상 구성 요소를 지정하지 않기 때문에 인터페이스를 사용해도 된다. 따라서 기존의 코드 구조가 추상 클래스면 추상 클래스로 진행하고, 아니라면 인터페이스로 만들면 된다. 여기서는 추상 클래스로 생각하고 진행하겠다. ✏️ Component 기본 기능을 뜻하는 추상 클래스 or 인터페이스 데코레이터들은 이 클래스를 상속하고 있기에 서로를 감쌀 수 있음 ✏️ ConcreteComponent 기본 기능(Component)을 구현(정의)하는 클래스 ..

    Observer(옵저버) 패턴이란?

    Observer(옵저버) 패턴이란?

    🚀 옵저버 패턴이란? 주제(subject)가 변경될 때마다 옵저버(observer)들에게 변화를 알려주는 디자인 패턴 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의함 주제와 객체를 따로 두는 경우도 있음. 즉, 주제가 객체를 관찰하다가 변화가 생기면 옵저버들에게 알려주는 것 주제는 옵저버들이 인터페이스를 구현한다는 것을 제외하면 옵저버에 대해 아무것도 모른다. 따라서 이들 사이의 결합은 느슨한 결합(Loose Coupling)이다. 옵저버는 언제든지 새로 추가 및 제거 가능 새로운 형식의 옵저버를 추가할 때도 주제는 변경할 필요 X 주제와 옵저버는 서로 독립적으로 재사용 O 주제나 옵저버가 달라져도 서..

    Java Stream(스트림)은 원본 데이터를 변경할 수 있다!?

    나의 의문점을 말하기전에, 스트림이 무엇인지 간단하게 살펴보자. 1. 스트림(Stream) 이란? Java 8부터 도입된 데이터 처리 기능 데이터 소스에서 데이터를 추상화하여 처리할 수 있도록 도와줌 컬렉션, 배열, 파일 등의 데이터 소스에서 데이터를 읽고, 중간 처리 및 최종 처리하여 원하는 결과를 만듦 스트림은 기존 데이터 소스의 요소를 가져와 중간 처리 연산을 수행하고 새로운 Stream으로 반환함 중간 처리 연산은 lazy evaluation 방식으로 동작하기에 최종 처리 연산이 호출될 때만 수행됨 즉, 중간 처리 연산을 호출해도 즉각적인 연산이 되지 않음 최종 연산이 수행되어야 스트림의 요소들이 중간 처리 연산을 거쳐 최종 연산에서 소모됨 함수형 프로그래밍 개념을 적용하여 작성했기에 가독성과 유..

    Strategy Pattern(전략 패턴)이란?

    Strategy Pattern(전략 패턴)이란?

    🚀 전략 패턴이란? 정책 패턴(Policy Pattern)이라고도 불림 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 사용할 수 있게 해줌 객체의 행위를 변경하고 싶은 경우 직접 수정하지 않고 전략이라 불리는 캡슐화한 알고리즘을 변경해줌으로써 유연하게 확장하는 방법 🚀 강아지로 예시 코드 작성해보기 먼저 강아지를 만들어야한다고 생각합니다. 강아지는 다양하고, 각각 행동(소리와 움직임)이 다릅니다. 이 때 어떻게 코드를 작성할 수 있을까요? 1. 상속을 이용 같은 행동을 하는 강아지들이라면 상관없지만 다른 행동을 하는 강아지들이 있을 수 있습니다. 코드 재사용성을 위해 상속을 이용하는 것도 좋지만, 불필요한 유지보수가 크게 늘어날 수 있습니다. 즉, 모든 서브클래스에서 같은 행동을 하는 것이..

    Delegate Pattern(델리게이트 패턴, 위임 패턴)이란?

    * 23.03.29 코드수정 Delegate 패턴이 '헤드퍼스트 디자인 패턴' 도서에 나와있지 않아서 정리해보고자 한다. 아무래도 Decorator 패턴 또는 strategy 패턴과 비슷하기 때문일까? 또한, 이 Delegate 패턴이 Decorator 패턴이랑 혼동된 블로그 글도 나와있기에 힘들었다. 그리고 Strategy 패턴과 유사한 부분이 있어서 이 점도 많이 헷갈렸다. 🤔 Delegate 패턴이란? delegate는 '위임하다' 라는 사전적 의미를 가지고 있음 즉, 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 디자인 패턴 객체 간의 결합도를 낮춰서 유지보수성과 확장성을 높이는데 사용됨 예를 들면 다음과 같다 A는 B의 기능을 사용하고 싶을 때, A가 B의 기능을 직접 구현하지 않..

    스프링부트 실행 시 IllegalStateException 발생

    스프링부트 실행 시 IllegalStateException 발생

    이번에는 스프링부트를 실행하면 발생하는 java.lang.IllegalStateException 예외이다. java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'webController' method 모호한 매핑이다. 'webController' 메서드를 매핑할 수 없다. 보자마자 WebController 클래스의 메서드가 뭔가 잘못되었다는것을 느꼈습니다. 그래서 해당 클래스를 처음부터 끝까지 찍어달라고 했습니다. 필드가 중간에 있어서 불편하시겠지만 일단 넘어가고, 잘 살펴보면 "/" 의 경로를 가진 메서드가 2개 있습니다. index() 와 index(Model model) 메서드가 문제였습니다. 같은 경로에 같은 HTTP 메서드이므로 중복이..