• Application Events and Listeners

    Application Events and Listeners SpringApplication은 ContextRefreshedEvent와 같은 일반적인 스프링 프레임워크 이벤트 외에도 몇몇 추가적인 애플리케이션 이벤트들을 발생시킨다. 몇몇 이벤트들은 ApplicationContext가 생성되기 전에 발생하기 때문에 리스너를 @Bean으로 등록할 수 없다. 리스너들은 SpringApplication.addListeners(..)나 SpringApplicationBuilder.listeners(…) 메소드들을 사용해 등록할 수 있다. 리스너들이 자동적으로 등록되게 하기 위해서는, META-INF/spring.factories 파일을 프로젝트에 추가하고 org.springframework.context.ApplicationListener 키값을 사용해서 리스너를...


  • RestTemplate

    RestTemplate Spring에서 제공하는 RestTemplate은 강력하고, 인기있는 자바 기반 REST 클라이언트이다. 개념적으로는 다른 템플릿 클래스와 유사하다. RestTemplate은 동기 API를 지원하며, blocking I/O에 의존한다. 동시성이 낮은 경우에 사용하면 괜찮다. HttpMessageConverter는 객체를 Http Request Body로 변환할 때 사용된다. 또한 response을 객체로 변환할 때도 HttpMessageConverter를 사용한다. HttpMessageConverter는 설정할 수 있다. RestTemplate은 HTTP 클라이언트 라이브러리보다...


  • Working with SQL Databases

    Working with SQL Databases 스프링은 SQL 데이터베이스에 대한 여러가지 지원을 제공한다. JdbcTemplate를 사용해서 직접 JDBC에 접근할 수 있고, 하이버네이트와 같은 ORM에 대한 지원도 제공한다. Spring Data는 추가 기능을 제공한다. 인터페이스 정의를 통해 Repository를 구현할 수 있으며, 인터페이스에 정의된 메소드 이름을 통해서 쿼리를 생성한다. Configure a DataSource 자바의 Datasource 인터페이스는 데이터베이스...


  • Kafka Metric

    Kafka Metric reporter 브로커 그리고 클라이언트는 내부 메트릭 정보를 리포트한다. 메트릭 정보를 수집해서 모니터링 하고자 할 경우 카프카에서 제공하는 MetricReporter를 사용하면 된다. Producer, Consumer, Kafka Streams는 “metric.reporters”라는 속성을 가지고 있다. 이 속성으로 MetricReporter 구현체를 지정해주면 된다. MetricReporter 구현체는 새로운 메트릭이 생성이 되면 새로운 메트릭 정보를 metricChange(KafkaMetric metric) 메소드를 통해 전달받는다....


  • Bind request parameter

    HandlerMethodArgumentResolver 이 글에서는 Converter, ConverterFactory, HandlerMethodArgumentResolver에 대해 알아보고, 어떤 용도로 사용할 수 있는지에 대해 소개한다. Bind Request Parameters 기본적으로 Spring은 Request Parameter를 단순한 타입으로만 변환해준다. Request Parameter로 String, int, boolean 타입의 데이터를 전달하면, 컨트롤러 메소드 파리미터에 자동으로 바인딩된다. 하지만 컨트롤러 메소드에서 다양한 타입을 바인딩해야할 때가 있다. Converter 컨트롤러 메소드에서 특정...