개발/Spring
-
KafkaAvroSerializer/Deserializer 를 이용하는 테스트개발/Spring 2022. 6. 1. 23:44
아래 글을 참고해서 거의 동일한 내용이지만, 코드를 열어보면서 더 대충 정리한 글입니다. https://medium.com/@igorvlahek1/no-need-for-schema-registry-in-your-spring-kafka-tests-a5b81468a0e1 개요 Kafka 에 데이터를 전송할 때 바이트 배열로 변환해줄 Serializer 가 필요하다. Json, Avro, Thrift 등등이 있는데, 현재 Avro 를 사용하고 있다. 테스트를 작성해야하는데, 최대한 간단하고 멱등성있는 테스트를 작성하고 싶었다. 인메모리 기반의 EmbeddedKafka가 있기 때문에 테스트컨테이너는 사용하지 않으려고 했다 Schema-Registry 까지 굳이 테스트할 생각은 없었다. (카프카로 전송하는 과정만..
-
스프링 배치 Processor의 Filtering개발/Spring 2021. 12. 27. 02:31
스프링 배치의 필터링 최근 아래와 같은 물음을 받은 적이 있다. 스프링 배치에서 만약 10000건을 읽어왔을 때, 업데이트 대상은 100건 정도임에도 불구하고 10000건의 업데이트를 치게되냐? 내 대답 : 100건에 대한 업데이트만 발생한다. 왜냐하면 스프링배치의 Processor가 null을 리턴하면 해당 item은 writer 로 가지 않는다. 라고 말했었다. 사실 내 눈으로 확인한 적이 없었다. 그래서 말하고도 약간 자신이 없었다. 분명히 그렇게 알고는 있는데.. 코드로 확인한 적이 없어 찜찜했다. 다음부턴 확실하게 알고 얘기할 수 있도록 한번 내부동작을 간단히 살펴보았다. 시작! step이 시작되면 아래와 같이 진행된다. ChunkOrientedTasklet chunkProcessor.proce..
-
스프링부트 profile 설정 (궁금증 해결. .properties / jvm 옵션 -Dspring/ web.xml의 init-param / System.setProperty() 등등)개발/Spring 2021. 3. 26. 14:23
공부를 하면서 불편함과 해결되지 않은 궁금증이 있었다. (불편.귀찮) mysql로 개발을 하려면 매번 mysql를 켜줘야한다. 그게 귀찮아서 h2로 인메모리 db를 쓰려면 설정을 또 바꿔줘야 하는데 url, id, pw를 자꾸 까먹는다. 즉, mysql h2 왔다갔다하는게 번거롭다. (모르겠는거) 스프링(이나 스프링부트)에 각종 설정이 많고 방법도 많아서 뭐가 뭔지 잘 모르겠고 헷갈린다. 1번 문제를 해결하려고 책을 보다보니 2번 문제가 어느정도 해결이 되었다. 설정 하는 방법들, 우선순위 스프링부트에는 각 목적에 따라 설정을 달리할 수 있는 Profile 이라는 기능을 제공한다. Profile은 이름을 지정해서 설정 자바 코드나 프로퍼티를 작성하고 지정한 Profile 이름을 통해 설정을 읽어들일 수 ..
-
JdbcTemplate 와 JDBC API의 비교개발/Spring 2021. 3. 1. 11:40
JdbcTemplate Spring에서 제공하는 클래스로 JDBC API의 불편함을 해소시켜주는 역할을 한다. (템플릿 메서드 패턴/ 전략 패턴이 사용됌) JDBC API vs JdbcTemplate JDBC API 는 자바로 데이터베이스에 접근할 수 있게 해주는 표준 인터페이스다. JAVA - JdbcTemplate - JDBC API - DB 의 단계로 생각할 수 있다. JdbcTemplate 로 해결할 수 있는 것 구조적인 반복의 해결 JDBC API 를 사용하면 try-catch 문을 만들고 Connection - Statement, 결과를 가져오기 위해 ResultSet 까지 생성 후 예외처리 과정을 매번 반복해야한다. 실제 작업과 무관한 코드가 많다. 그러므로 어떤 일을 하는 코드인지 단번에 ..
-
@Controller, @RestController, @RequestMapping, @ResponseBody개발/Spring 2021. 1. 11. 16:52
@Controller, @RestController Spring MVC는 request mapping, request input, exception handling등에 사용되는 @Controller와 @RestController를 제공한다. @Controller는 @component 를 구체화(specialization) 한 것인데, @coponent는 구현 클래스들을 classpath scanning 을 통해 자동으로 탐지되게 해주고, bean 에 자동으로 등록시킨다. @RestController는 @Controller와 @ResponseBody로 구성된 Coposed Annotation 이다. 즉 바로 Response body를 작성하고 HTML로 렌더링한다. @Controller와 @Response..