전체 글 58

[스프링] 빈 생명주기 콜백에 관하여

애플리케이션이 시작되었을 때 초기화 작업, 종료되기 전에 종료 작업이 필요한 경우가 있습니다. 스프링 빈은 객체가 생성되고, 의존관계 주입이 끝나야 사용가능한 상태가 됩니다. 개발자들은 어떻게 그 시기를 알 수 있으며, 종료 전에 종료작업을 진행 할 수 있을까요? => 콜백메서드를 통해 초기화 작업 및 종료 작업을 진행할 수 있습니다. 스프링 빈의 생명주기 스프링 빈의 경우 두가지 등록 과정을 거칩니다. 스프링 빈 생성 의존관계 주입 두가지 등록 과정을 마쳤을 때, 사용가능한 상태가 됩니다. 이 때, 스프링이 초기화 콜백메서드를 호출해 줍니다. 또한 스프링은 스프링이 종료되기 전에 소멸전 콜백메서드를 호출해 줍니다. 빈 생명주기 콜백 방식 빈 생명주기 콜백 방식은 크게 3가지로 나뉩니다. 인터페이스 (I..

Spring 2023.05.25

Spring의 핵심 Concept는 무엇인가

들어가기에 앞서 Spring은 자바 언어 기반의 프레임워크입니다. 자바언어는 객체지향언어라는 주된 특징을 지니고 있습니다. 스프링은 객체지향언어가 가진 특징을 극대화시켜 주는 프레임워크입니다. 다시 말해 스프링은 좋은 객체지향 애플리케이션을 개발할 수 있도록 도와주는 프레임워크입니다. 좋은 객체지향이란 무엇인가? 해당 부분에 대해 간략하게 정리해 놓은 내용을 참고 부탁드립니다. 좋은 객체 지향 설계의 5가지 원칙 좋은 객체 지향 설계의 5가지 원칙 Robert Martin의 클린코드에서 좋은 객체 지향 설계의 원칙을 SOLID로 정의 하였다. S : SRP(Single Responsibility Principle) 단일 책임 원칙 O : OCP(Open/Closed Principle) 개방-폐쇄 원칙 L..

Spring 2023.05.23

[모던 자바 인 액션] 동작 파라미터화

실생활에서는 소비자들의 요구는 시도때도 없이 바뀝니다. 사과를 분류하는 메서드가 있다고 가정하겠습니다. 소비자들의 요구사항은 시도 때도 없이 많을 것입니다. 녹색 사과만 보여줘! 녹색 사과인데 100g 이 넘는 사과만 보여줘! 빨간 사과를 보여줘! 빨간 사과인데 100g 안되는 사과만 보여줘 이 외에도 소비자들이 원하는 조건에 따라 계속 바뀔 것입니다. 이러한 조건을 효과적으로 대응할 수 있는 방법이 바로 동작 파라미터화입니다. 동작 파라미터화 해당 예제에서는 Predicate를 사용했는데, Predicate는 참 혹은 거짓을 반환하는 함수입니다. public interface ApplePredicate { boolean test(FilteringApples.Apple apple); } public cl..

Java 2023.05.10

PubSub 구조에 대해서

Redis는 key - value 기반의 캐시 저장소이지만, 캐시 기능 외에도 다양하게 사용되는 오픈소스입니다. 그중 pub/sub 기능에 대해서 알아보고 공부해 볼 예정입니다. Message Queue vs Pub Sub Message Queue와 Pub Sub 방식은 둘 이상의 서비스가 서로 통신하기 위해 분산 시스템에서 사용되는 일반적인 패턴입니다. Message Queue Message Queue는 Publisher와 Queue를 통해 통신하는 다수의 Consumer로 구성됩니다. Queue 통신 방식은 Publisher가 Consumer에게 메시지를 전달하는 단방향 구조입니다. Publisher가 Queue에 메시지를 주입하면 한 명의 Consumer가 이 메시지를 받는 방식입니다. 예제를 통해..

CS 지식 2023.05.07

강타입 언어에 대해서

강타입 언어란 무엇인가? 강타입언어란 프로그래밍 언어에서 Integer(정수), String(문자열)과 같이 데이터의 타입을 미리 지정하는 언어입니다. 모든 상수 그리고 변수들은 데이터의 타입을 정의해주어야 합니다. 그리고 강타입 언어에서 method들은 특정 데이터 유형만 허용합니다. 강타입 언어는 서로 다른 데이터 타입의 혼합에 대해서 확고하게 제한을 합니다. 만약 위반사항이 일어나게 되면 예외가 발생합니다. 강타입 언어는 데이터 타입의 준수를 위한 컴파일러를 사용합니다. Java의 간단한 예시를 들고 왔습니다. AddCalculator라는 클래스가 있으며 baseNumber, name 변수 모두 데이터 타입을 지정해 주었습니다. AddCalculator는 printInfo라는 메서드를 가지고 있는데..

CS 지식 2023.05.05

REST API에 대해서

해당 글에서는 REST API에 대해서 기본적인 원리와 함께 예시로 알아보려고 합니다. REST Representational State Transfer의 약자로 www와 같은 분산 하이퍼 시스템 아키텍처의 한 양식입니다. 주고받는 자원(Resource)에 이름을 규정하고 URI에 명시해 HTTP메서드 (GET, POST, PUT, DELETE)를 통해 자원의 상태를 주고 받는 것을 말합니다. API Application Programming Interface의 약자로 애플리케이션에서 제공하는 인터페이스를 말합니다. API를 통해 서버 혹은 프로그램 사이를 연결할 수 있습니다. REST API REST 아키텍처를 따르는 시스템 / 애플리케이션 인터페이스 라고 말할 수 있습니다. REST의 특징 Stat..

CS 지식 2023.05.04

Polling / Long Polling / Server Sent Event / Web Socket

Server에서 발생한 Event들을 클라이언트에게 보내야 하는 상황이 종종 발생합니다. 이러한 경우에 Polling / Long Polling / Server Sent Event / Web Socket을 사용할 수 있습니다. 이번 장에서는 위 4개의 특징들에 대해 알아보고자 합니다. Polling Polling 방법은 Client가 http request를 서버로 요청하여 이벤트 내용을 전달받는 방식입니다. Short Polling Short Polling은 클라이언트가 주기적으로 서버에 요청을 보내는 방법입니다. 일정 시간마다 서버에 요청을 보내 데이터가 갱신되었는지 확인하여 갱신된 값이 있다면 데이터를 응답받는 방식입니다. 클라이언트, 서버 모두 구현이 간단합니다. 서버가 요청에 대한 부담이 크지 ..

CS 지식 2023.05.02

오버로딩과 오버라이딩에 대해

본문에 들어가기 앞서 오버로딩과 오버라이딩을 한줄 요약한다면 다음과 같습니다. 오버로딩(overloading) : 기존에 없는 새로운 메서드를 정의하는 것 오버라이딩 (overriding) : 상속받은 메서드의 내용을 변경하는 것 오버로딩 (overloading) 자바에서는 한 클래스 내에서 메서드 매개변수의 개수 혹은 타입이 다르다면 이미 존재하는 메서드명을 다시 사용할 수 있습니다. 오버로딩이 성립하기 위해서는 다음의 조건을 만족해야 합니다. 메서드 이름이 같아야 한다. 매개변수의 개수 혹은 타입이 달라야 한다. 메서드의 반환 타입은 영향을 미치지 않는다. [출력 결과] 이름 : tommy 이름 : tommy, age : 2 예시로 Printer 이라는 클래스를 생성했습니다. print method가..

Java 2023.05.01

Java Parameter Passing Mechanism

Definition 함수에 인자를 넘기는 방식에는 다음과 같은 방식이 있습니다. value reference result value-result name 이 중 Pass By Value, Pass By reference 메서드가 널리 사용되고 있습니다. 프로그래밍 언어들 마다 각자의 방법으로 인자들을 넘기는 방법을 택하고 있습니다. Java의 경우 엄격하게 Pass By Value를 지키고 있습니다. 들어가기 앞서 Wikipedia에 정의된 Call By Referecne, Call By Value의 정의를 한번 짚고 넘어가겠습니다. Call By Value Call By Value는 method에서 변수를 사용 시 새 메모리 영역에 복사해 method의 변수에 바인딩합니다. 메서드에서 값을 변경하면 m..

Java 2023.04.26

Java Collection Framework

Java에서 Collection Framework라는 용어를 들어본 적이 있을 것입니다. 많이는 들어봤지만 정리는 잘 안하게 되는 Collection Framework에 대해서 정리를 해보려고 합니다. Collection : 다수군의 데이터를 의미합니다. Framework : 표준화된 프로그래밍 방식을 의미합니다. Collection Framework 는 즉 데이터군을 저장하는 클래스들을 표준화한 설계도 라고 보시면 될 것 같습니다. Collection Framework는 JDK1.2 에 등장하였습니다. JDK 1.2 이전에는 컬렉션 클래스, 다수의 데이터를 저장할 수 있는 클래스들을 서로 다른 방식으로 처리했습니다. Collection Framework 의 등장으로 인해 다양한 종류의 컬렉션 클래스가 ..

Java 2023.04.25