JVM/Spring

JVM/Spring

[Toby Spring Reactive Programming] 비동기 RestTemplate과 비동기 MVC/Serlvet (5)

서론 https://www.youtube.com/watch?v=ExUfZkh7Puk 토비님의 유튜브 강의 내용을 정리한 글 입니다. 본론 @RestController public static class MyController { AsyncRestTemplate rt = new AsyncRestTemplate(); @GetMapping("/rest") public String rest(int idx) { return rt.getForEntity("http://localhost:8081/service?req={req}", String.class, "hello" + idx); } } AsyncRestTemplate을 사용하면, 톰캣 스레드 1개로 처리가 가능하다. 하지만, 백그라운드 스레드가 생성되어 처리하기..

JVM/Spring

[Toby Spring Reactive Programming] 자바, 스프링의 비동기 (4)

서론 https://www.youtube.com/watch?v=aSTuQiPB4Ns 토비님의 유튜브 강의 내용을 정리한 글 입니다. 본론 스프링 컨트롤러 리턴타입에 따른 동작방식 #1 Object @GetMapping("/async") public String async() throws InterruptedException { log.info("async"); Thread.sleep(2000); return "hello"; } 기본 tomcat thread pool 수인 200개 까지만 동시처리가 가능하다. [링크] https://tomcat.apache.org/tomcat-8.5-doc/config/executor.html #2 Callable @GetMapping("/callable") public ..

JVM/Spring

[Toby Spring Reactive Programming] Schedulers (3)

서론 https://www.youtube.com/watch?v=Wlqu1xvZCak 토비님의 유튜브 강의를 보고 정리한 내용입니다. 본론 https://kdhyo98.tistory.com/136 이전 코드까지는 모두 main스레드에서 동작했다. 하지만, IO나 큰 계산같은 작업들이 있다면 main스레드가 끝날 때까지 멈추게 되는데, 모바일 어플로 생각하면 버튼을 누를 때 작업을 완료될 때까지 멈추게 된다. 사용자가 작업 처리를 기다리지 않고 다른 이벤트를 받을 수 있도록 백그라운드에서 동작시켜야 하는데, 이걸 main이 아닌 다른스레드에 작업을 넘겨 처리할 수 있다. Ractive Streams 구현 사용자가 다 확인할 필요가 없는 경우에는 백그라운드에서 동작을 시켜 main은 다른 이벤트를 받게 할 수..

JVM/Spring

[Toby Spring Reactive Programming] Operators (2)

서론 https://www.youtube.com/watch?v=DChIxy9g19o 토비님 유튜브 강의를 보고 정리한 내용입니다. 본론 Operator https://kdhyo98.tistory.com/135 첫 번째 강의에서 Publisher, Subscriber를 하나씩 사용해서 리액티브 스트림즈를 간단하게 알아봤다. Operator는 기존 Publisher -> Subscriber에서 중간에 연산자를 두어 결과를 변경하거나 10개를 1개만 최종으로 보내거나 하는 녀석을 말한다. Publisher (DataA) -> (DataA) Operator (DataB) -> (DataB) Subscriber 느낌이다. Java 8의 스트림을 생각하면 이해하기 쉽다. 스트림의 map, reduce, filter..

JVM/Spring

[Toby Spring Reactive Programming] Reactive Streams 시작 (1)

서론 https://youtu.be/8fenTR3KOJo 토비의 스프링에 있는 토비님의 라이브 유튜브 강의를 보고 정리한 내용입니다. 본론 Iterable vs Observable Iterable public static void main(String[] args) { Iterable iter = () -> new Iterator() { int i = 0; final static int MAX = 10; public boolean hasNext() { return i < MAX; } public Integer next() { return ++i; } }; iter.forEach(System.out::println); } Iterable 인터페이스를 구현하면, for-each를 사용할 수 있다. 주로, C..

JVM/Spring

[Spring] h2 설정

OS M1 MAX macOS Ventura 13.2 PROJECT java - 11 kotlin - 1.6.21 spring - 2.7.8 build.gradle.kts dependencies { ... runtimeOnly("com.h2database:h2") } application.yml spring: h2: console: enabled: true path: /h2-console datasource: url: jdbc:h2:mem:test username: sa password: driverClassName: org.h2.Driver platform: h2 접근 url - http://localhost:8080/h2-console 에러사항 원인 데이터베이스가 존재하지 않아서 발생되는 문제입니다. ..

JVM/Spring

[Spring] 그냥되는 건 없다 1 - Spring-Boot AutoConfiguration

😏 서론 spring-boot 2.6.6 기준 스프링부트에서 빈 기본설정파일들을 intellij로 아무리 눌러도 불러오는 곳을 쉽게 찾지 못한 김에 정리하게 된 기본설정하는 곳. 🧐 본론 133개의 설정파일들이 정의되어 있다. 그런데 AopAutoConfiguration, BatchAutoConfiguration과 같이 기본적으로 의존성이 추가되어 있지 않는 녀석들이 있다. @ConditionalOnProperty - property가 참일 경우 컨테이너 등록 @ConditionalOnClass - 해당 클래스가 경로에 존재할 경우 컨테이너 등록 @ConditionalOnMissingClass - 해당 클래스가 존재하지 않을 경우 컨테이너 등록 이처럼 스프링부트와 호환된다고 명시된 녀석들의 의존성을 추가..

JVM/Spring

[Spring] CaffeineCache key는 Object

🥺 본론 key가 Object이기 때문에 key를 지정할 때 타입을 신경써서 해야된다. 자칫 Integer로 지정했다가 String으로 조회하게 되면 조회가 안된다.. 🙂 결론 개인적으로는 하나의 타입으로 통일 (ex - String)하는 게 헷갈리지 않고 좋을 것 같다.

Hyo Kim
'JVM/Spring' 카테고리의 글 목록