test topic 데이터를 consume하고, " "(공백)단위로 구분하여 test2 topic으로 produce하는 것을 목표로 하였다. 방법은 크게 두가지로 시도하였다. 1) Component로 선언하여 stream을 start해주는 방법 2) Autowired 어노테이션을 통해 StreamsBuilder을 주입받는 방법 → 참고: https://www.baeldung.com/spring-boot-kafka-streams (Topology: https://kafka.apache.org/0102/documentation/streams/core-concepts#streams_topology) 핵심은 Topology를 만드는 것인데, 1번의 경우 Topology를 만들고, stream을 start한 반면..
1. Filter: 정제역할, 예) XSS filter 2. Interceptor: 가로채기 예) 권한관리 3. AOP: 관점 지향 프로그래밍 예) 로깅, 트랜젝션, 에러처리 -> 프로그래밍을 하다보면 공통적인 기능이 많이 발생합니다. 이러한 공통 기능은 상속을 통해서 모든 모듈에 적용을 시켜줄 수 있지만 몇 가지 문제가 있지요. 우선 JAVA에서는 다중 상속이 불가능하기 때문에 한계가 있고, 기능을 구현하는 부분에 핵심 기능 코드와 공통 기능 코드가 섞여 있어서 효율이 떨어집니다. 이러한 문제점때문에 핵심 기능과 공통 기능을 분리 시켜놓고, 공통 기능을 필요로 하는 핵심 기능들에서 사용하는 방식의 AOP가 등장을 하게 되었습니다. 스프링은 자체적으로 프록시 기반의 AOP를 지원하고 있습니다. * pro..
myBatis를 사용하거나 @ReqeustBody 어노테이션을 사용하면 수신되는 JSON 데이터를 찰떡같이 맵핑해준다. 하지만 필드명 시작이 대문자이면 주의해주어야한다. 원인은 Jackson은 Java Bean 네이밍 규칙으로 Java 클래스의 Json property를 맵핑하기 때문이다. Java Bean 네이밍 규칙 핵심은 이렇다. (JavaBeans Spec https://www.oracle.com/java/technologies/javase/javabeans-spec.html) 1. 시작은 일반적으로 소문자이다. 2. 처음 두문자가 대문자이면 그대로 사용한다. 8.8 Capitalization of inferred names. Thus when we extract a property or even..
데이터 형태가 서버에서 파싱하여 사용하기 좋게 찰떡같이 수신되면 좋겠지만, 그렇지 않은 경우도 많다. 최근 진행하고있는 프로젝트에서 특정 프로토콜 기반으로 통신하기위해서 정해진 포멧으로 JSON을 생성해서 사용해야했는데, 그게 좀 특이한 형태였다. 그래서 데이터를 Map을 해당 프로토콜 기반 JSON 형태로 Serialize하고, 다시 Deserialize 해서 필요한 Object들에 맞게 파싱해주는 작업을 했다. 이 과정에서 주로 사용 및 테스트 했던 어노테이션을 위주로 정리하였으며, 아래 링크를 확인하면 더 많은 어노테이션을 확인 할 수 있다. 참고: https://www.baeldung.com/jackson-annotations Serialization 1. @JsonAnyGetter : Map이 ..
- Total
- Today
- Yesterday