spring web 비동기

오랜만에 포스팅을 한다. 새해도 거의 보름이 지나가는데 요즘은 포스팅이 뜸했다. 다시 블로그를 열심히 해야 겠다. 물론 될지는 모르겠지만.. 어쨋든 오늘은 Spring에서 지원해주는 web 비동기 기술을 몇가지 살펴보도록 하자. 오늘은 이런 것들이 있다는 것만 알고 넘어가자. 추후에 좀 더 상세하게 살펴볼 수 있으면 그때 살펴보도록 하자. 너무 처음부터 깊게 파고 들면 어려우니.. 이 기술은 요즘 나오는 reactive streams 과 많이 비슷하므로 이 기술 먼저 알고 가면 좋을 듯하다. 실제 이 기술(오늘.. Read More

Spring aop Proxy

오늘 알아볼 내용은 Spring 에서 사용하는 aop 프록시 원리에 대해서 살펴보도록 하자. 기본적으로 Spring에서 aop의 프록시 매커니즘은 두가지를 이용한다. 하나는 JDK 동적 프록시와 다른 하나는 Cglib 프록시를 사용하고 있다. JDK 동적 프록시 경우에는 java의 리플렉션을 이용해서 객체를 만드는데 Cglib 경우에는 바이트코드를 조작해 프록시 객체를 만든다. 스프링으로 개발하다보면 인터페이스 한개당 구현체도 한개의 경우가 많이 있다. 예전에는 인터페이스를 구현하지 않으면 aop가 동작하지 않는다고하여(물론 이 이유만은 아니다.) 인터페이스 한개 당 구현체도 한개 존재하는.. Read More

@Async 와 비동기

@Async 와 비동기 대한 고찰 Spring의 @Async는 비동기적으로 메소드를 실행 한다. 비동기는 리턴값을 받을 수 없다. 그건 당연한 거다. 설사 받는다해도 null값이 떨어질 것이다. 한가지 받을 방법이 있는데 그게 바로 java.util.concurrent.Future 타입으로 받아야 된다. @Async public Future<String> getFuture() throws InterruptedException { return new AsyncResult<>(“return”); } 이런 식으로 리턴 값을 받을 수 는 있다. 사용해 보자 Future<String> stringFuture = asyncBean.getFuture(); String result = stringFuture.get(); 그런데 조금이상하다 비동기로 리턴값을 받으려면 getFuture이라는 메소드가.. Read More