본문 바로가기

WEB24

[Spring] 스프링 빈 웹 스코프, request 타입과 프록시 모드 - 2/2 [Spring] 스프링 웹 스코프, request Scope 웹 스코프는 웹 환경에서 동작하는 스코프이며 프로토 타입과 다르게 스프링 컨테이너가 생성시점부터 종료시점까지 관리합니다. 웹 스코프의 종류 request : HTTP 요청이 들어와서 나갈때까지 유지되는 스코프, 각 클라이언트의 HTTP 요청마다 별도의 인스턴스 생성 session : HTTP Session과 동일한 생명주기를 가지는 스코프 application : 서블릿 컨텍스트(ServletContext)와 동일한 생명주기를 가지는 스코프 websocket : 웹 소켓과 동일한 생명주기를 가지는 스코프 서블릿 컨텍스트 (ServletConext) 하나의 서블릿이 서블릿 컨테이너와 통신하기 위해 사용되는 메서드들을 가지고 있는 클래스, 서블릿은.. 2022. 6. 19.
[Spring] 스프링 빈 스코프(Scope) 싱글톤, 프로토 타입 - 1/2 [Spring] 스프링 빈 스코프(Scope) 싱글톤, 프로토 타입 이전 포스팅에서 스프링 빈의 생명주기와 초기화, 소멸 콜백 메소드에 대해서 알아보았습니다. 스프링 빈은 기본적으로 스프링 컨테이너가 종료될때까지 유지되는데 스프링 빈의 기본 스코프타입이 싱글톤이기 때문입니다. 스코프(Scpoe)는 스프링 빈이 존재할수 있는 범위를 뜻합니다. 싱글톤 타입 : 스프링 컨테이너의 시작 ~ 종료시점까지 유지되는 기본적인 범위의 스코프 프로토 타입 : 스프링 빈의 생성과 의존관계 주입시점까지만 스프링 컨테이너에서 관리된다. 프로토 타입 스코프 프로토 타입 스코프는 다음과 같은 특징이 있습니다. 스프링 빈을 가져올때마다 싱글톤 타입 빈과 다르게 계속 생성되고 초기화 콜백 메서드도 매번 수행합니다. 스프링 컨테이너가.. 2022. 6. 19.
[Spring] 스프링 빈 생명주기 초기화, 소멸 콜백 관리하기 @PostConstruct, @PreDestroy [Spring] 스프링 빈 생명주기 콜백 스프링 프레임워크 기반의 애플리케이션에서는 데이터베이스를 사용하거나 TCP 소켓 연결을 할때 프로그램 시작시 미리 연결을 합니다. 그리고 프로그램이 종료될때 연결된 작업들을 모두 종료하는데 이번 포스팅에서는 스프링에서 이 연결과 종료 작업을 어떻게 수행하는지 대해서 알아보겠습니다. 테스트를 위해 TCP 소켓 연결 상황을 표현할 클래스와 테스트 메서드를 만들어보겠습니다. NetworkClient.java public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출 url = " + url); connect(); call("초기화 연결 메시지"); .. 2022. 5. 26.
[Spring] 리액티브 스트림 Operator 의 개념과 예제 [Spring] 리액티브 스트림 Operations 지난번 포스팅에서는 Flow 라이브러리에 있는 Publisher, Subscriber를 사용했는데 이번엔 reactive-streams 라이브러리로 사용 해보겠습니다. 사용방법은 똑같지만 reactive-streams 는 모든 Java 버전에서 사용가능 하다는점이 다릅니다. 지난번과 동일하게 Publisher, Subscriber 를 작성해보겠습니다. PubSub.java package com.example.springreactivestudy.demo2; import lombok.extern.slf4j.Slf4j; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; i.. 2022. 2. 25.
[Spring] 리액티브 스트림 기본 개념 (Publisher, Subscriber, Subscription) 스프링 리액티브 스트림(reactive-streams) 기초 Publisher & Subscriber Publisher 는 연속된 데이터들을 정보를 요청한 Subscriber 에게 제공합니다. 이때 Publisher가 Subscriber 에게 전달할때는 다음과 같은 프로토콜을 따릅니다. onSubscribe / onNext* / (onError | onComplete) onSubscribe는 항상 호출되고 onNext는 0번부터 n번까지 호출이 될수있습니다. onError, onComplete는 선택적으로 호출됩니다. Publisher & Subscriber 생성 public class PubSub { public static void main(String[] args) { Iterable iter = .. 2022. 2. 17.
[JavaScript] 함수(function)와 조건문(if/else if/else) 사용방법 예제 [JavaScript] 함수 & 조건문 Function, 함수 자바스크립트에서 Function, 함수란 일반적인 다른프로그래밍 언어에서와 마찬가지로 반복된 작업을 쉽게할수있도록 만든것입니다. Function을 사용하기위해서는 function 키워드를 선언하고 함수이름을 지정해야합니다. function test() { console.log("Hello World!!") } test(); Hello World!! 함수에 매개변수 전달 함수에 매개변수를 전달 하는 방법도 있습니다. function test(param){ console.log("Hello " + param); } test("javascript"); Hello javascript function add(a, b){ console.log(a + b.. 2022. 2. 15.
JavaScript 데이터타입 var, let, const 과 Array, Object 사용방법 JavaScript 데이터 타입 정리 변수, 상수 const / let / var const : 값을 변경할수 없는 상수 let : 값을 변경할수 있는 변수 var : 값을 변경할수 있는 변수, 같은이름으로 재정의가 가능하다. 일반적으로는 모든 값은 const로 선언하고 업데이트 해야하는 값의 경우 let을 사용합니다. var는 JS에서 가장 초기에 나온 변수 타입인데 현재는 안정성의 이유로 잘 쓰이지 않습니다. var 는 값을 변경할수있고 동일한 이름의 변수를 새로 정의할수도 있지만 코드량이 많아진다면 변수의 사용지점을 파악할수 없는 상황이 발생할수 있습니다. var a = 3; var a = "HelloWorld" const 는 값을 변경할수 없으므로 아래의 예제에서는 에러가 발생합니다. const .. 2022. 2. 12.
[IntelliJ] unmappable character for encoding MS949 에러 해결방법 #UTF-8 [IntelliJ] unmappable character for encoding MS949 에러 해결방법 IntelliJ 에서 인코딩 설정을 하지 않은상태로 소스내부에서 한글을 사용하면 해당 에러가 발생할수 있습니다 설정에서 인코딩 방식을 MS949 에서 UTF-8로 바꾸는 방법을 설명하겠습니다. IntelliJ 인코딩 방식 설정 변경 1. File => Setting 2. encoding 검색 or File Encodings 이동 3. Encoding 설정 변경 Glocal Encoding, Project Encoding, Default encoding for properties files 총 3군데의 인코딩 형식을 MS949 에서 UTF-8 방식으로 변경후 APPLY 를 눌러서 적용 합니다. 4. i.. 2021. 12. 6.