Spring WebClient

오늘은 Spring의 WebClient의 사용법에 대해서 몇가지 알아보도록 하자. 사용 API만 살펴 볼 예정이므로 reactive streams(reactor..) 들의 개념과 사용법은 다른 블로그를 살펴보길 바란다. reactive streams 대한 내용을 알고 보면 좋지만 몰라도 코드를 보는데는 문제가 없을 듯 하다. WebClient는 Spring5 에 추가된 인터페이스다. spring5 이전에는 비동기 클라이언트로 AsyncRestTemplate를 사용을 했지만 spring5 부터는 Deprecated 되어 있다. 만약 spring5 이후 버전을 사용한다면 AsyncRestTemplate 보다는 WebClient 사용하는 것을 추천한다. 아직 spring 5.2(현재기준) 에서 AsyncRestTemplate 도.. Read More

spring과 netty

이번엔 spring을 이용해서 netty의 서버를 만들어보자 내용은 비슷하다. 기존에 했던거와 비슷하다. 스프링의 설정만 사용했다. main부터 보자 public static void main(String[] args) { try(AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class)){ context.registerShutdownHook(); NettyServer nettyServer = context.getBean(NettyServer.class); nettyServer.start(); } } 다들 아시다 시피 AnnotationConfigApplicationContext 에 SpringConfig을 설정했다. 다음 으로 SpringConfig를 보자 @Configuration @ComponentScan(“me.wonwoo.spring”) @PropertySource(“classpath:server.properties”) @Getter public class SpringConfig { @Value(“${tcp.port}”) private int port; @Bean public InetSocketAddress tcpPort() { return new InetSocketAddress(port); } @Bean public static.. Read More

netty (5) netty의 ByteBuf

ByteBuf 이번엔 netty의 버퍼를 알아볼 차례다. 네티의 버퍼는 flip 메서드를 호출하지 않아도 읽기도 쓰기 인덱스가 분리되어 사용 가능하다. 소스를 보자. private void testBuffer(ByteBuf buf, boolean isDirect){ assertEquals(11, buf.capacity()); assertEquals(isDirect, buf.isDirect()); buf.writeInt(65537); assertEquals(4, buf.readableBytes()); assertEquals(7, buf.writableBytes()); assertEquals(1, buf.readShort()); assertEquals(2, buf.readableBytes()); assertEquals(7, buf.writableBytes()); assertEquals(true, buf.isReadable()); buf.clear(); assertEquals(0, buf.readableBytes()); assertEquals(11,buf.writableBytes()); } @Test public void createUnpooledHeapBufferTest(){ ByteBuf byteBuf = Unpooled.buffer(11); testBuffer(byteBuf,false); } 테스트로 netty의 ByteBuf 11개를 생성하였다. 첫번째는 capacity가 11인지 확인하였다. 그리고 direct인지 확인한다… Read More