본문 바로가기

전체138

Spring 이란? Spring의 기본 개념을 간단히 소개 *자세한 설명 생략 ▷ Spring? - JAVA 웹 프레임워크로 JAVA를 이용한 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임워크 - Srping 프레임워크는 20여 개의 모듈로 구성 ▷ Spring 주요 특징 ▶ IOC(Inversion Of Control), 제어반전 객체생성, 생명주기, 의존성 관리를 직접 제어하지 않고 외부에서 관리 ▶ IOC Container 분류 - DI(Dependency Injection), 의존성 주입 개발자가 객체 내부에서 직접 호출(new)하지 않고 외부(Spring Container)에서 객체를 생성해서 넣어주는 방식 - DL(Dependency Lookup), 의존성 검색 Bean에 접근하기 위해 Spring C.. 2023. 2. 1.
SpringBoot Maria DB + MyBatis 설정 *자세한 설명 생략 ▷ Project 전체 구조 *파일 이름으로 검색 가능 *이전 MQTT Client + WebFlux 구축 관련 Project에 이어서 진행(아래 관련 글 참고) ▷ Table Create *example을 위한 Table CREATE TABLE `test`.test ( topic VARCHAR(255) NOT NULL, message VARCHAR(255) NOT NULL ); INSERT INTO `test`.test (topic, message) VALUES ('1','HELLO-1'), ('2','HELLO-2'), ('3','HELLO-3'), ('4','HELLO-4'), ('5','HELLO-5'); SELECT * FROM `test`.test; ▷ build.gradl.. 2022. 12. 6.
SpringBoot에서 MQTT Client + WebFlux 구축 WebFlux를 적용한 MQTT Client를 구축하고 Topic 메시지 도착 시 Callback으로 Bean을 통해 서비스 구분 *Mqtt Broker(mosqitto) 아래 관련 글 참고 *자세한 설명 생략 ▷ Project 전체 구조 *파일 이름으로 검색 가능 ▷ build.gradle ▷ application.properties ▷ MqttApplication.java *아무 작업하지 않음 ▷ MqttPublishVO.java *MqttController 발행 요청 VO ▷ MqttSubscribeVO.java *MqttController 구독 요청 VO ▷ MqttController.java ▷ UserController.java ▷ MqttService.java ▷ A/B/C ServiceIm.. 2022. 12. 2.
SpringBoot JSP 설정 Spring Boot에 내장된 Tomcat은 JSP을 지원하지 않는다. *gradle 사용 *자세한 설명 생략 ▷ build.gradle *의존성 추가 implementation 'javax.servlet:jstl' implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' ▷ application.properties *Spring Boot Jsp View 경로 설정 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp ▷ Jsp 파일 생성 *위 설정한 경로와 맞게 생성 ▷ 결과 확인 2022. 12. 1.
Sinks.many() 란? EmitterProcessor가 @Deprecated 돼서 Sinks.many()로 대체 사용 *EmitterProcessor 내부에서 Sinks를 사용하고 있음 *Processor : 처리 단계를 나타내며 발행자 인터페이스와 구독자 인터페이스를 모두 상속 *자세한 설명 생략 ▷ Sinks.many() - 데이터를 구독 받고, 구독한 데이터를 다시 발행할 때 사용 - 여러 subscriber가 사용할 수 있는 구독과 발행이 동시에 일어나는 프로세서 - 내부 queue를 가지고 있어 subscriber가 없더라도 해당 데이터를 큐에 쌓음 종류 설명 unicast() 하나의 Subscriber만 허용(즉, 하나의 Client 만 연결) multicast() 여러 Subscriber를 허용 multicast(.. 2022. 11. 29.
Spring WebFlux Non-Blocking 방법 Mono, Flux를 이용했다고 Non-Blocking이 되진 않는다. *Thread Pool을 통해서도 가능 *WebClinet 생략 *자세한 설명 생략 ▷ Reactor Thread 지정 * 동일한 Thread를 사용하지 않도록 Reactor에게 Thread 지정 종류 설명 subscribeOn() - 스트림을 구독할 때 동작을 지정한 Thread Pool에서 수행할 수 있도록 설정 *subscription process에 적용 publishOn() - publishOn 이전의 모든 것은 Main Thread에 의해 실행 *subscribeOn 과 유사하지만 중요한 차이점은 다운스트림에서 실행 - subscriber가 처리하는 부분인 onNext() / onComplete() / onError()를 .. 2022. 11. 29.
스레드 풀(Thread Pool) 이란? *자세한 설명 생략 ▷ 스레드(Thread) 란? 프로세스 내에서 실제로 작업을 수행하는 주체 ▷ 스레드 풀(Thread Pool) 이란? 병렬 처리가 잦은 프로그램에서 사용하기 적합 스레드를 미리 생성하고, 작업 요청이 발생할 때마다 미리 생성된 스레드로 해당 작업을 처리하는 방식 *이때, 작업이 끝난 스레드는 종료되지 않으며 다음 작업 요청이 들어올 때까지 대기 ▷ 스레드 풀(Thread Pool) 주요 용어 용어 설명 초기 스레드 생성될 스레드 코어 스레드 남아있을 최소 스레드 최대 스레드 스레드의 최대 개수 ▷ 스레드 풀(Thread Pool) 생성 종류 설명 CachedThreadPool - 초기 스레드 수, 코어 스레드 수가 0개, 최대 스레드 수(Integer.MAX_VALUE) - 작업이 .. 2022. 11. 22.
MQTT Broker(mosqitto) 설치 및 설정 Docker를 이용해 MQTT Broker를 간단하게 설치할 수 있다. *자세한 설명 생략 ① docker-compose.yml 생성 *docker-compose.yml 설명 아래 관련 글 참고 version: "3.7" services: mqtt: container_name: mqtt-broker image: eclipse-mosquitto volumes: - mosquitto_conf:/mosquitto/config - mosquitto_data:/mosquitto/data - mosquitto_log:/mosquitto/log networks: - mqttnet ports: - 1883:1883 volumes: mosquitto_conf: mosquitto_data: mosquitto_log: ne.. 2022. 11. 16.
R2DBC 란? * 자세한 설명 생략 ▷ R2DBC 란? Spring Webflux(Reactive Programming)로 서비스를 구축할때 DB 사용이 필요한 경우 R2DBC를 사용하여 RDB에 Non-Blocking 접근 가능 *기존 RDB 접근은 Blocking이기때문에, 완전한 Non-Blocking 서비스 구축 불가 ▷ 지원 되는 RDB *2022.11.11 기준 - H2 - MariaDB - Microsoft SQL Server - MySQL - jasync-sql MySQL - Postgres - Oracle ▷ 참고 Spring Data R2DBC Spring Data R2DBC, part of the larger Spring Data family, makes it easy to implement R2D.. 2022. 11. 11.
728x90
728x90