본문 바로가기

Spring11

[Spring] Spring @Scheduled 스케줄러 간단히 사용 해보기 01. @Scheduled 스케줄러 간단히 사용 해보기이번 시간에는 스프링에서 제공하는 스케쥴러 기능을 사용 해보자간단한 예시를 통해 스케쥴러의 특징에 대해서 알아본다01-1. SpringBootScheduleApplication 설정package com.spring.schedule;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.scheduling.annotation.EnableScheduling;@EnableScheduling // 스케쥴링 기능 활성화@SpringBootApplicationp.. 2025. 1. 7.
[Spring] Spring Boot JUnit5 자주 사용되는 어노테이션 정리 Spring Boot JUnit5 자주 사용되는 어노테이션 정리JUnit5 테스트 시 사용하는 어노테이션 및 부가 기능에 대해 간략히 정리한다@DisplayName테스트 이름 명시어떤 테스트를 의미하는지 테스트명 결정@SpringBootTest vs @WebMvcTest통합 테스트와 웹 레이어 기반 단위 테스트@SpringBootTest목적 : 애플리케이션 전체 컨텍스트 로드 후 통합 테스트 수행테스트 범위 : 애플리케이션 전체 컨텍스트 로드하기에, DB, 서비스 계층, 리포지토리, 보안 등 모든 빈을 포함한 전체 테스트 수행 가능장점 : 애플리케이션 실제 실행되는 환경과 동일한 환경 테스트 가능단점 : 테스트 시간이 길어짐, 모든 컨테스트 로드 하기에@WebMvcTest목적 : MVC (Controll.. 2025. 1. 7.
[스프링 MVC - 백엔드 웹 개발 기술] 웹서버(Web Server), 웹 애플리케이션 서버(WAS) 그리고 서블릿 01. 웹서버, 웹 애플리케이션 서버01-1. 웹 - HTTP 기반웹은 HTTP 기반으로 통신을 한다클라이언트 요청 → 인터넷 → 서버(HTML 생성) 값 반환01-2. 웹 서버(Web Server)HTTP 기반 동작정적 리소스 제공, 기타 부가기능 제공정적(파일) HTML, CSS, JS, 이미지, 영상예) Nginx, Apache01-3. 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반 동작웹 서버 기능 포함 + (정적 리소스 제공 가능)애플리케이션 로직 수행동적 HTML, HTTP API(JSON)서블릿, JSP, 스프링 MVC예) 톰캣(Tomcat) Jetty, Undertow01-4. 웹 서버, 웹 어플리케이션 서버(WAS) 차이점👉🏼 H/W 관점에서의.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 빈 스코프 01. 빈 스코프란?지금까지 우리는 스프링 빈이 “스프링 컨테이너의 시작”과 함께 생성되어서 “스프링 컨테이너가 종료” 될 때까지 유지된다고 학습 하였다이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻함01-1. 스프링이 지원하는 다양한 스코프싱글톤기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 스코프프로토타입스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여, 더는 관리하지 않는 매우 짧은 범위의 스코프웹 관련 스코프request : 웹 요청이 들어오고 나갈때 까지 유지되는 스코프session : 웹 세션이 생성되고 종료될 때 까지 유지되는 스코프application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 빈 생명주기 콜백 01. 빈 생명주기 콜백 시작📌 스프링 빈이 생성 되거나 소멸 되기 직전에 Bean 안에 메서드를 호출하는 빈 라이프사이클스프링 빈 생성 및 소멸 전 Bean 안에 메서드 호출 기능데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 이번 시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 알아본다간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정애플리케이션 시작 시점에 네트워크 연결 : connect() 호출애플리케이션 종료 시점에 네트워크 종료 : disconnect() 호출01-1. NetworkClientp.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 의존관계 자동 주입 01. 다양한 의존관계 주입 방법의존 관계 주입에는 4가지 방식이 존재생성자 주입Setter 주입필드 주입일반 메서드 주입01-1. 생성자 주입생성자를 통해 의존 관계를 주입지금까지 진행한 방식이 생성자 주입특징불변, 필수 의존관계에 사용생성자 호출시점에 딱 1번만 호출 보장생성자 주입이 발생되는 시점은 스프링이 빈을 등록하면서 의존 관계 주입도 같이 발생한다. 즉 스프링도 new OrderServiceImpl(memberRepository, discountPolicy)를 호출해서 의존 관계 주입을 실행 한다@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepos.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본]컴포넌트 스캔과 의존관계 자동 주입 01. 컴포넌트 스캔과 의존관계 자동 주입 시작하기지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해 스프링 빈을 등록만약 이렇게 등록해야 할 빈이 수백개인 경우 누락이 되는 문제가 발생함스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능 제공또한 의존 관계도 자동으로 주입하는 @Autowired 기능도 제공01-1. AutoAppConfig 생성@ComponentScan( excludeFilters = @ComponentScan.Filter( type = FilterType.ANNOTATION, classes = Configuration.class ))@Confi.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 싱글톤 컨테이너 01. 웹 애플리케이션과 싱글톤대부분의 스프링 애플리케이션은 웹 어플리케이션이다. 물론 웹이 아닌 다른 개발도 가능스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다 (멀티 쓰레드)고객이 3번 요청을 하면 3개의 객체가 생성이 되는 상황?순수 DI를 사용 한다는 가정하에 얘기하는 것간단한 테스트 코드를 생성 해보자01-1. SingletonTestpackage hello.core.singleton;import hello.core.AppConfig;import hello.core.member.MemberService;import org.assertj.core.api.Assertions;import org.junit.jupiter.api.Di.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 01. 새로운 할인 정책 개발새로운 할인 정책을 확장 해보자악덕 기획자 : 서비스 오픈 직전에 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하고 싶어요. 예를 들어서 기존 정책은 VIP가 10000원을 주문하든 20000원을 주문하든 항상 1000원을 할인했는데, 이번에 새로 나온 정책은 10%로 지정해두면 고객이 10000원을 주문시 1000원을 할인해주고, 20000원 주문시에 2000원을 할인해주는 거에요!순진 개발자 : 제가 처음부터 고정 금액 할인은 아니라고 했잖아요.악덕 기획자 : 애자일 소프트웨어 개발 선언 몰라요?? 계획을 따르기보다 변화에 대응하기를순진 개발자 : (하지만 난 유연한 설계가 가능하도록 객체지향 설계 원칙을 준수했지.. 2023. 4. 25.
[Spring MVC - 핵심 원리 기본] 스프링 핵심 원리 이해1 - 예제 만들기 01. 프로젝트 생성01-1. 프로젝트 생성간단히 스프링 부트 프로젝트 생성프로젝트 생성 과정은 생략02. 비즈니스 요구사항과 설계02-1. 요구사항회원회원은 가입하고 조회할 수 있다회원은 일반, VIP 등급회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동 가능주문과 할인 정책회원은 상품 주문 가능회원 등급에 따라 할인 정책 적용 가능할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인 적용할인 정책은 변경 가능성이 높다지금은 스프링 없이 순수 자바로 진행03. 회원 도메인 설계03-1. 회원 도메인 요구사항회원 가입하고 조회 가능회원 일반, VIP 등급 존재회원 데이터는 자체 DB 구축 가능, 외부 시스템과 연동 가능회원 도메인 협력 관계클라이언트 → 서비스 → 인터페이스 ←.. 2023. 4. 25.