Reactor 레퍼런스 문서 공부. 3.2 Asynchronicity to the Rescue? JVM에서 비동기 코드를 어떻게 개발할 수 있을까? 자바는 비동기 프로그래밍을 위한 두 가지 모델을 제공한다. Callbacks 비동기 메서드는 반환 값을 가질 수 없지만 외부 callback 매개 변수 (람다나 익명 클래스)를 통해 결과를 호출받을 수 있다. (ex : Swing의 EventListener) Futures 비동기 메서드는 Future를 즉시 리턴한다. 비동기 프로세스는 T value를 계산하지만 Future 개체는 이에 대한 access를 래핑 한다. 값을 즉시 사용할 수 없으며 사용할 수 있을 때까지 값을 polling 할 수 있다. (ex: Callable 작업을 실행하는 Executor..
Reactor 사이트에서는 Reactor를 아래와 같이 소개한다. Reactor is a fourth-generation Reactive library for building non-blocking applications on the JVM based on the Reactive Streams Specification 1,2,3세대가 뭔지 궁금하긴 한데 관련 내용은 찾지 못했다. (RxJava 같은걸 얘기하는 거려나..) spring webflux를 쓰기 위해서 우선 reactor를 공부해야 하는데 reactor를 먼저 공부하기 위해 순수하게 reactor에 대해서만 공부하기 위한 프로젝트 설정을 해보았다. reactor homeapge : https://projectreactor.io/ 홈페이지에서 문..
R2DBC 0.8.0.RELEASE 가 2019년 12월 01일에 나왔다. (R2DBC 0.8.0 goes GA) RELEASE 버전은 처음 나온 것이고 기존엔 1.0.0.M5, 1.0.0.M6처럼 마일스톤 버전을 올리다가 M8부터 0.8.0.M8과 같이 major 버전을 하향했다. 이유는 SPI (Service Provider Interface)를 확정하지 못했기 때문이라고 한다. (R2DBC 0.8 Milestone 8 released 참고) (즉 추후 변경될 소지가 있음) 이에 대응하는 Spring Data R2DBC도 2019년 12월 6일에 RELEASE 버전이 나왔다. (Spring Data R2DBC goes GA) reference documentSpring Data R2DBC - Refe..
Apache Cordova 소개 apache cordova는 웹을 그대로 android나 ios에서 사용할 수 있도록 하이브리드 앱을 만들어주는 opensource mobile development framework이다. 한국어 문서도 이미 제공되고 있다. https://cordova.apache.org/docs/ko/9.x/guide/overview/index.html nuxt로 만든 프로젝트도 마찬가지로 apache cordova를 통해 하이브리드 앱을 만들 수 있다. 이미 nuxt로 만든 프로젝트가 있다는 전제 조건하에 cordova로 빌드하기 위한 설정을 진행한다. ios의 경우 맥북이 있어야 하기 때문에 android 기준으로 설명을 진행한다. 하지만 명령어만 조금 다르게 수행할 뿐 나머지는 동..
이 글은 정리된 내용이 아니라 도움이 되지 않을 확률이 높음. 초보자가 공부하면서 찾은 내용을 적은 것이라 두서없음 vuex의 strict 설정 vuex의 export const strict = false; 설정을 하지 않으면 store 객체를 form에 직접 매칭하고 변경이 불가능하다. 원래 store의 데이터는 mutation으로 변경을 처리해야 하지만 form에 store의 객체를 직접 매칭 하게 되면 이 원칙이 깨지게 된다. 결국 어쩔 수 없이 strict를 false 처리해야 하는데 의외로 vuex 가이드에서도 배포할 때 strict true를 쓰지 말라고 한다. (성능 비용이 많이 들어간다는 이유로) https://vuex.vuejs.org/guide/strict.html vuex의 변이 감지..
Spring Boot 2.2 Release Notes Upgrading from Spring Boot 2.1 Deprecations from Spring Boot 2.1 2.1에 deprecated 선언되었던 class, method, properties가 삭제되었다. Spring Framework 5.2 Spring Framework가 5.2로 업그레이드 되었다. JMX now disabled by default JMX 기본 설정이 disabled 로 변경되었다. 해당 기능을 활성화 하려면 spring.jmx.enabled=true 설정을 사용한다. IDE 특징을 사용하여 applicatio을 관리하는 경우 해당 flag도 활성화 할 수 있다. Jakarta EE dependencies javax. 를..
JDK의 버전별 변경 사항은 이곳을 참고하세요. Spec Java SE 13 Platform JSR 388에 정의된 바와 같이 JSR 388 구현이 목표 실제 Spec은 Final Release Specification 문서를 참고해야 함 Final Release Specification Feature Summary 전체 JEP Feature 목록은 OpenJDK의 JDK 13 문서로 확인할 수 있다. Component Feature specification / language Switch Expressions (Preview) specification / language Text Block (Preview) Switch Expressions (Preview) Switch Expression은 JDK 1..
3년 전 쯤에 했던 작업이라 상세한 내용을 적지는 않고 요약해서 정리만 한 글임. Spring 을 사용하면 보통 web template engine을 thymeleaf를 많이 쓴다. 그런데 thymeleaf가 버전이 올라가면서 자체 성능이 올라갔다고 하지만 실제로 성능 테스트를 해보면 정말 느리고 많이 몰리면 서버가 다운된다. 왜 그런가 힙 덤프를 떠보니 문제가 되던 포인트는 groovy 였다. groovy의 어느 위치인지 기억이 나지 않지만 자체 캐시 처리를 하는 코드에 synchronized 처리가 되어 있었고 해당 부분에 병목이 생기면서 데드락이 발생해 성능이 저하되었다. (아래 jira의 경우랑 비슷한거 같긴한데 저건 1.5.1 버전의 closed 된 jira라 관련 내용인지 확실하지 않다...)..
2019-09-19에 STS 4.4.0 이 릴리즈 되어 사용해보았다. Junit 5 실행 시 다음과 같은 에러가 발생했다. java.lang.NoClassDefFoundError: org/junit/platform/commons/PreconditionViolationException at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createFilteredTest(JUnit5TestLoader.java:70) at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createTest(JUnit5TestLoader.java:64) at org.eclipse.jdt.internal.junit5.runn..
HttpStatus가 302 인 경우 브라우저에서는 해당 페이지로 리다이렉트 되어 화면이 처리된다. restTemplate으로 요청한 응답 결과의 HttpStatus가 302 인 경우는 해당 페이지로 리다이렉트 되지 않고 응답 결과만 반환받는다. 하지만 redirect된 결과로 응답을 받을 수 있는 기능이 있다. restTemplate에서 requestFactory를 apacheml httpclient를 사용하는 경우 지원되는 기능이다. 다음처럼 HttpClientBuilder에 redirectStrategy 설정을 하면 요청된 결과가 302인 경우 해당 페이지로 리다이렉트 된 결과를 반환해준다. RestTemplate restTemplate = new RestTemplate(); HttpComponen..