본문 바로가기

개발기술/Spring

(11)
스프링 환경설정 ; 스프링 부트 Spring Boot란?1. Spring Boot는 Spring Framework를 더 쉽게 사용하도록 만든 확장 도구입니다.Spring Framework는 강력한 기능을 제공하지만, 설정이 복잡하고 개발 초기 설정에 시간이 많이 걸립니다.Spring Boot는 이러한 초기 설정을 자동화하고, 필요한 기능들을 빠르게 적용할 수 있도록 돕는 프레임워크입니다.2. Spring Boot의 주요 특징자동 설정(Autoconfiguration)Spring Boot는 대부분의 설정을 자동으로 처리합니다. 예를 들어, 데이터베이스를 연결하거나, 웹 서버를 실행할 때, 추가적인 설정 없이도 바로 동작합니다.자동 설정(@EnableAutoConfiguration)**클래스 경로(classpath)**에 존재하는 의존성(..
비동기 Web Flux WebFlux란?Spring WebFlux는 Spring 5에서 도입된 Reactive Programming을 지원하는 비동기, 논블로킹(non-blocking) 웹 프레임워크입니다. 기존의 Spring MVC가 Servlet 기반의 동기적, 블로킹 방식으로 작동하는 것과는 달리, WebFlux는 Reactive Streams API를 기반으로 하여 더 높은 확장성과 비동기 처리를 제공합니다.WebFlux의 주요 특징논블로킹 I/O (Non-blocking I/O) WebFlux는 Netty, Undertow와 같은 비동기 I/O 처리 엔진과 통합되어 동작합니다. 요청과 응답 처리 과정에서 I/O 작업이 블로킹되지 않아 많은 요청을 동시에 처리할 수 있습니다. Spring WebFlux는 비동기 I/O를..
Spring 스케쥴러 Spring SchedulerSpring Scheduler는 Spring Framework의 구성 요소로, 개발자가 특정 간격이나 시간에 작업을 수행할 수 있도록 도와줍니다. Spring Task API의 일부로, 외부 라이브러리에 의존하지 않고도 작업을 스케줄링할 수 있습니다. 백그라운드 작업 실행, 주기적인 데이터 처리, 작업 자동화, 정기적인 유지 보수 작업에 유용하게 사용할 수 있습니다.Spring Scheduler의 주요 기능간단한 설정:주석(annotation) 또는 XML 설정을 통해 스케줄 작업을 구성할 수 있어 간단하게 설정하고 관리할 수 있습니다.Spring Boot와의 통합:Spring Boot에서는 최소한의 설정으로도 사용 가능하며, 많은 설정이 자동으로 구성됩니다.Fixed Del..
MSA도입을 위한 Spring Cloud Spring Cloud Gateway 설정은 마이크로서비스 아키텍처에서 여러 개의 독립된 서비스로 나누어진 애플리케이션에 대한 요청을 중앙에서 관리하고, 라우팅과 필터링을 수행하기 위한 구성입니다. 이를 통해 사용자는 여러 서비스에 개별적으로 접근하지 않고, 하나의 진입점(Gateway)을 통해 서비스에 접근할 수 있게 됩니다.   1. 프로젝트 환경 설정Spring Boot 프로젝트 생성: Spring Initializr 또는 IDE를 통해 Spring Boot 프로젝트를 생성하고, Spring Cloud Gateway와 Security에 필요한 의존성을 추가합니다.의존성 추가:Spring Cloud Gateway: 라우팅과 필터링을 제공.Spring Security: 보안 기능을 제공하여 인증과 인가..
Spring 동시성이슈 해결 동시성이슈여러 요청이 동일한 자원에 접근하며 발생하는 문제를 통칭함. 주로 DB에서 동일한 레코드를 동시접근하면 문제가 발생.예) 사용자1과 사용자2가 계좌1의 잔액 1만원을 1천원 사용하는 요청을 동시에 보냈을때, 사용자1의 요청에 의해서 잔액이 9천원이 되기전에 사용자2의 요청이 시작되어 두 사용자의 요청 결과가 각각 잔액 9천원으로 저장되어 2천원 사용이 되어도 1천원만 감소하는 경우. 동시성이슈 해결방안1. DB의존적인 해결방식 : DB 기기의 Isolation Level을 Serializable로 장치를 하거나 JPA의 Optimist Lock, Pessimistic Lock을 사용하여 DB의 기능을 사용- 단점 : DB서버는 인프라 확장이 어려워 성능의 한계가 뚜렷한 기기이다. DB의존적인 방..
스프링 전체구조 스프링 전체흐름1.서버 시작 시:스프링 부트 애플리케이션을 실행하거나 Tomcat 같은 서블릿 컨테이너에 배포하면 서버가 초기화 과정을 시작합니다.2. 스프링 부트 애플리케이션 초기화Spring Boot의 가장 중요한 특징은 애플리케이션이 실행 시 자동으로 필요한 Bean과 설정을 구성해주는 것SpringApplication.run(): main() 메서드에서 호출되며, 스프링 애플리케이션의 전체 구동을 시작합니다.스프링 부트 자동 구성(Auto-Configuration) : SpringApplication.run()이 호출되면 스프링 부트는 애플리케이션의 설정값을 로드합니다. 이때 application.yml이 읽혀지며, 설정값이 자동 구성(Auto-Configuration) 과정에 활용됩니다.클래스패..
Java 프로젝트 초기 환경설정 (스프링 부트, Package, Configuration) 1. Project Structure & Build Tool빌드관리도구 선택  : 라이브러리를 관리해주고 빌드 및 실행을 도와주는 주체Gradle : 최신 gradle, 빌드속도가 빠름,Maven : legacy2. Java VersionSpecify the Java version in your build tool config:JDK : 코드 작성시에는 Java 버전 번호만 중요하고 특정 Vendor는 빌드할때에만 결과물에 영향을 미친다.Usually follow team convention3. 스프링부트   Spring Boot는 Spring Framework의 모든 기능을 포함하면서도, 개발자가 빠르게 개발을 시작할 수 있도록 추가적인 지원과 도구를 제공합니다. spring initializer(ht..
스프링 MVC, 예외처리 MVC패턴의 설계원칙**MVC(Model-View-Controller)**는 애플리케이션을 비즈니스 로직, 프레젠테이션, 사용자 입력 처리로 분리하는 아키텍처 패턴입니다.Model애플리케이션의 핵심 데이터와 비즈니스 로직을 담당.데이터베이스와 직접 상호작용하며 데이터를 저장하거나 처리.예: DAO, DTO, Service 클래스 등.View사용자에게 보여지는 **UI(User Interface)**를 담당.Model에서 받은 데이터를 사용자에게 표시.주로 HTML, JSP, Thymeleaf, React 등의 프론트엔드 기술을 사용.Controller**사용자 요청(Request)**을 받아 처리하고, 적절한 **응답(Response)**을 반환. 사용자의 요청을 해석하고, 적절한 모델 함수를 호출하여 ..