728x90
반응형

Programming 8

[Spring] Spring MVC 와 Spring Webflux의 차이점

Spring Framework에는 대표적인 프로그래밍 모델이 있다. 첫 번째는 가장 널리 알려지고 대중적으로 사용되는 Spring MVC 모델이고, 두 번째는 Spring WebFlux 모델이다. Spring WebFlux란? Spring WebFlux는 Spring 5에서 새롭게 도입된 모듈이며, 비동기 및 리액티브 프로그래밍을 지원한다. Spring MVC와는 다르게 Servlet API를 기반으로 하지 않고, 리액티브 프로그래밍 모델을 채택하여 작동한다. 이전에는 Servlet API를 기반으로 한 Spring MVC를 사용하여 동기적인 처리 방식으로 웹 애플리케이션을 개발했다. 동기적인 처리 방식은 한 번에 하나의 요청을 처리하는데, 이는 높은 트래픽과 데이터 양을 효과적으로 처리하기 어렵다. 최..

Programming/Spring 2024.03.17

[Spring] Spring Initializr로 프로젝트 생성하기

Spring Initializr Spring Initializr 를 사용하면 SpringBoot 기반의 프로젝트를 쉽게 만들 수 있다. https://start.spring.io/ 의 주소로 접근하면 아래와 같은 창이 뜬다. Project SpringBoot를 빌드하고 배포하는 방식을 선택한다. 과거에는 Maven을 많이 사용했지만 최근에는 Gradle을 사용하는 추세이다. Language 프로젝트에 사용할 프로그래밍 언어를 선택한다. SpringBoot SpringBoot 버전을 선택한다. SNAPSHOT은 아직 개발 중인 데모버전이다. M1이나 M2 등은 정식 릴리즈되지 않은 버전이다. 다른 것 없이 버전만 명시되어 있는 것이 정식 릴리즈 된 버전임으로 이들 중에서 선택하면 된다. 높은 버전은 높은 ..

Programming/Spring 2024.03.05

[SQL] SQL의 개념과 종류

SQL의 개념 Structured Query Language의 약자로서, 구조화된 질의 언어이다. 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수한 목적의 프로그래밍 언어 관계형 데이터베이스 관리 시스템(RDBMS)을 사용할 때 해당 시스템의 데이터를 정의하고, 조작하고, 제어할 목적으로 만들어진 프로그래밍 언어이다. SQL 문법은 는 크게 DDL, DML, DCL 세 가지 종류로 구분될 수 있다. 데이터 정의어 (DDL, Data Definition Language) 대상 : 데이터베이스 객체 (테이블, 뷰, 시퀀스 제약조건 등) 데이터 정의 언어로 풀어 말할 수 있으며 스키마를 정의하거나 조작하기 위해 사용한다. 데이터 조작어 (DML, Data Manipulatio..

Programming/SQL 2023.08.05

[자바] 추상클래스와 인터페이스의 차이

추상클래스 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이다. 이러한 특성 때문에 미완성 설계도라고 표현한다. 추상클래스는 상속을 위한 클래스이기 때문에 따로 객체(인스턴스)를 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상 클래스는 추상 메소드를 0개 이상 가지고 있다는 것을 제외하고는 일반 클래스와 별 다를 것이 없다. class 앞에 "abstract" 예약어를 붙여 해당 클래스가 추상 클래스임을 나타낸다. 또한 메서드도 "abstract" 예약어를 붙여 추상 메서드를 선언할 수 있다. abstract class 클래스이름 { ... public abstract void 메서드이름(); }​ 추상클래스의 특징 추상 클래스는 추상 메서드를..

Programming/Java 2023.07.13

[자바] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점

객체지향 프로그래밍에서 다형성을 설명할 때, 하나의 클래스 내부에 같은 이름의 기능을 여러 개 정의하거나 상위 클래스의 기능을 하위 클래스에서 다시 정의하는 것, 즉, 오버라이딩과 오버로딩에 대해서 간략하게 짚고 넘어갔었다. 이번에는 오버라이딩과 오버로딩이 구체적으로 어떻게 사용되는지. 또, 어떤 차이점을 가지고 있는지에 대해서 알아보자. 다형성 다형성이란, 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다. 자바에서는 주로 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해서 다형성을 지원한다. 오버로딩(Overloading) - 확장 하나의 클래스 내부에서 확장하는 개념 오버라이딩(Overriding) - 재정의 부모 클래스의 상속을 받은 자식 클래..

Programming/Java 2023.07.09

[스프링] MVC, MVP, MVVM 디자인 패턴

MVVM을 이해하기 위해서는 MVC -> MVP -> MVVM 순서대로 아키텍처 패턴에 대한 이해가 필요하다. MVC 패턴 객체지향프로그래밍에서 MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나로써, 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다. Model, View, Controller의 약자로 User – View – Controller – Model – Controller – View User의 구조를 가지고 있다. MVC 패턴은 응용프로그램의 시각적 부분과 가 이면의 동작과 제어를 처리하는 부분(비즈니스 로직이라 한다)을 분리..

Programming/Spring 2023.07.03

[스프링] 디자인 패턴

디자인 패턴의 개요 여러 사람이 협업을 하며 프로그램을 개발 할 때 다른 사람이 작성한 코드나 기존의 코드를 이해하는 것은 어렵다. 이런 코드들은 유지 보수를 함에 있어서 새로운 기능을 추가하거나 최적화를 하기에 힘든 구조적인 결함을 가지고 있다. 이를 최소화하기 위해서 디자인 패턴은 등장했다. 특수한 경우의 프로그래머가 아니라면 프로그래밍을 하면서 만나는 문제가 지구상에서 유일한 문제일 경우는 거의 없기 때문에 앞서 이미 많은 수많은 오류들을 피하는 방법을 패턴화하게 된다면 좀더 버그가 발생하는 폭을 줄이고 수정하는데(발생하는 숫자가 아니라 예외를 찾는데 조금더 덜 시간을 사용하게 됨) 최소한의 시간을 들일 수 있게 된다. 즉, 디자인 패턴은 프로그램 등을 개발하는 중에 발생했던 문제점들을 정리 및 특..

Programming/Spring 2023.07.02

[스프링] 관점 지향 프로그래밍 (AOP)

AOP의 등장 배경 객체 지향 프로그래밍 (OPP, Object-oriented Programming) 공통의 목적이 있는 데이터와 동작을 묶어서 하나의 객체로 정의하는 것이다. 객체를 적극적으로 활용함으로써 기능을 재사용할 수 있는 것이 가장 큰 장점이다. 여기서 말하는 객체를 잘 활용하기 위해서는 관심사 분리(SoC, Seperation of Concerns)의 디자인 원칙을 준수해야 한다. Spring MVC에서는 @Controller, @Service, @Repository와 같이 관심사별로 계층을 나눠 객체를 관리하게 된다. 이 관심사의 분리는 모듈화의 핵심이 된다. 객체 지향 프로그래밍의 한계 점 특정 관심사 업무 코드에 트랜잭션, 로깅, 보안 등은 필수적인 부가기능이기 때문에 업무 기능과는 ..

Programming/Spring 2023.06.29
728x90
반응형