정적 컨텐츠 SpringBoot는 main/resource/static 아래 HTML를 작성 시 정적 컨텐츠를 제공한다. 웹 브라우저에서 localhost/8080/hello-static를 요청 시 내장 톰캣 서버를 거쳐서 Spring으로 간다. 그러면 Spring
회원 관리 예제 비즈니스 요구사항 정리 회원 도메인과 리포지토리 만들기 회원 리포지토리 테스트 케이스 작성 회원 서비스 개발 회원 서비스 테스트 1. 비즈니스 요구사항 정리 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터
Spring Bean과 의존관계 Spring Bean을 등록하는 2가지 방법 컴포넌트 스캔과 자동 의존관계 설정 자바 코드로 직접 스플이 빈 등록하기 xml 문서 설정(잘 사용하지 않음) 1. 컴포넌트 스캔과 자동 의존관계 설정 회원 컨트롤러가 회원서비스와 회원
Spring DB 접근 기술(H2 데이터베이스 사용) 순수 Jdbc 스프링 통합 테스트 스프링 JdbcTemplate JPA 스프링 JPA 1.순수 Jdbc java/hello/spring/repository/JdbcMemberRepository.java 회원정보
Spring DB 접근 기술 순수 Jdbc 스프링 통합 테스트 스프링 JdbcTemplate JPA 스프링 JPA 4. JPA JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. JPA를 사용하면, SQL과 데이터 중심의
모든 메소드의 호출 시간을 측정하고 싶다면?공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?문제!회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니
핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타웹 기술: 스프링 MVC, 스프링 WebFlux데이터 접근 기술: 트랜잭션, JDBC, ORM 지원 XML 지원기술 통합: 캐시, 이메일, 원격접근, 스케줄링테스트: 스프링 기반 테스트 지원언어: 코틀린, 그루비
스프링 핵심 원리 이해1 - 예제 만들기 비즈니스 요구사항과 설계 회원 도메인 설계 회원 도메인 개발 회원 도메인 실행과 테스트 주문과 할인 도메인 설계 주문과 할인 도메인 개발 주문과 할인 도메인 실행과 테스트 1. 비즈니스 요구사항과 설계 회원 회원을 가입하고
스프링 핵심 원리 이해1 - 예제 만들기 비즈니스 요구사항과 설계 회원 도메인 설계 회원 도메인 개발 회원 도메인 실행과 테스트 주문과 할인 도메인 설계 주문과 할인 도메인 개발 주문과 할인 도메인 실행과 테스트 5.주문과 할인 도메인 설계 주문과 할인 정책 회원은
새로운 할인 정책 개발새로운 할인 정책 적용과 문제점관심사의 분리AppConfig 리팩터링새로운 구조와 할인 정책 적용전체 흐름 정리좋은 객체 지향 설계의 5가지 원칙의 적용IoC, DI, 그리고 컨테이너스프링으로 전환하기 주문한 금액의 %를 할인해주는 새로운 정률 할
#ㅁㄴㅇㄻㄴㅇㄹ 새로운 할인 정책 개발 새로운 할인 정책 적용과 문제점 관심사의 분리 AppConfig 리팩터링 새로운 구조와 할인 정책 적용 전체 흐름 정리 좋은 객체 지향 설계의 5가지 원칙의 적용 IoC, DI, 그리고 컨테이너 스프링으로 전환하기 4. Ap
스프링 컨테이너 생성과정컨테이너에 등록된 모든 빈 조회스프링 빈 조회 - 기본스프링 빈 조회 - 동일한 타입이 둘 이상스프링 빈 조회 - 상속 관계BeanFactory와 ApplicationContext다양한 설정 형식 지원 - 자바 코드, XML스프링 빈 설정 메타
웹 애플리케이션과 싱글톤싱글톤 패턴싱글톤 컨테이너싱글톤 방식의 주의점@Configuration과 싱글톤@Configuration과 바이트코드 조작의 마법스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다.대부분의 스프링 애플리케이션은 웹 애플리케이션이다
컴포넌트 스캔 컴포넌트 스캔과 의존관계 자동 주입 시작하기 탐색 위치와 기본 스캔 대상 필터 중복 등록과 충돌 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 -지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직접
다양한 의존관계 주입 방법옵션 처리생성자 주입을 선택롬복과 최신 트랜드조회 빈이 2개 이상 - 문제@Autowired 필드 명, @Qualifier, @Primary애노테이션 직접 만들기조회한 빈이 모두 필요할 때, List, Map자동, 수동의 올바른 실무 운영 기준
의존관계 자동 주입 다양한 의존관계 주입 방법 옵션 처리 생성자 주입을 선택 롬복과 최신 트랜드 조회 빈이 2개 이상 - 문제 @Autowired 필드 명, @Qualifier, @Primary 애노테이션 직접 만들기 조회한 빈이 모두 필요할 때, List, Map 자
빈 생명주기 콜백 시작인터페이스 InitializingBean, DisposableBean빈 등록 초기화, 소멸 메서드 지정애노테이션 @PostConstruct, @PreDestroy (권장) 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요
빈 스코프 빈 스코프란? 프로토타입 스코프 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 문제점 프로토타입 스코프 - 싱글톤 빈과 함께 사용시 Provider로 문제 해결 웹 스코프 request 스코프 예제 만들기 스코프와 Provider 스코프와 프록시 1. 빈
프로젝트 생성예제 프로젝트 만들기 - V0로그 추적기 - 요구사항 분석로그 추적기 V1 - 프로토타입 개발로그 추적기 V1 - 적용로그 추적기 V2 - 파라미터로 동기화 개발로그 추적기 V2 - 적용7\. 로그 추적기 V2 - 적용
필드 동기화동시성 문제 - 예제 코드ThreadLocal쓰레드 로컬 동기화저번 시간 프로토타입 로그 추적기가 아닌 정식 버전으로 만들어 보자.향후 다양한 구현제로 변경할 수 있도록 LogTrace인터페이스를 먼저 만들고, 구현해보자.LogTraceFieldLogTrac
템플릿 메서드 패턴과 콜백 패턴 템플릿 메서드 패턴 전략 패턴 템플릿 콜백 패턴 1. 템플릿 메서드 패턴 1-1. 시작 로그 추적기 도입 전과 후의 코드를 비교해보자. OrderControllerV0 코드 OrderControllerV3 코드 V0는 해당 메
프록시 패턴과 데코레이터 패턴 예제 프로젝트 만들기 프록시, 프록시 패턴, 데코레이터 패턴 인터페이스 기반 프록시와 클래스 기반 프록시 1. 예제 프로젝트 만들기 > proxy라는 새로운 프로젝트를 생성하였습니다. 다양한 상황에서 프록시 사용법을 이해하기 위해 예
리플렉션JDK 동적 프록시 - 예제 코드JDK 동적 프록시 - 적용1JDK 동적 프록시 - 적용2CGLIB지금까지는 프록시를 이용해서 로그 추적기라는 부가 기능을 적용 할 수 있었다. 하지만 문제는 대상 클래스 수 만큼 프록시 클래스를 만들어야 한다는 점이다.자바가 기
프록시 팩토리포인트컷, 어드바이스, 어드바이저프록시 팩토리동적 프록시를 사용할 때 문제점을 다시 확인해보자.문제점인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB를 적용하려면 어떻게 해야할까?두 기술을 함께 사용할 때 부가 기능
빈 후처리기스프링이 제공하는 빈 후처리기@Bean이나 컴포넌트 스캔으로 스프링 빈을 등록하면, 스프링은 대상 객체를 생성하고 스프링 컨테이너 내부의 빈 저장소에 등록한다. 그리고 이후에는 스프링 컨테이너를 통해 등록한 스프링 빈을 조회해서 사용하면 된다.빈 후처리기 -
@Aspect 프록시 - 적용@Aspect 프록시 - 설명스프링은 @Aspect 애노테이션으로 매우 편리하게 포인트컷과 어드바이스로 구성되어 있는 어드바이저 생성 기능을 지원한다.지금까지 어드바이저를 직접 만들었던 부분을 @Aspect애노테이션을 사용해서 만들어보자.L
AOP 소개 - 핵심 기능과 부가 기능AOP 소개 - 애스펙트AOP 적용 방식AOP 구현핵심 기능은 해당 객체가 제공하는 고유의 기능이다. 예를 들어서 OrderService의 핵심 기능은 주문 로직이다.부가 기능은 핵심 기능을 보조하기 위해 제공되는 기능이다. 예를
포인트컷 - 포인트컷 지시자 포인트컷 - 예제 만들기 포인트컷 - execution1 포인트컷 - execution2 포인트컷 - within 포인트컷 - args 포인트컷 - @target, @within 포인트컷 - @annotation, @args 포인트컷 - b
실전 예제실무 주의사항@Trace애노테이션으로 로그 출력하기@Retry애노테이션으로 예외 발생시 재시도 하기요 두개를 만들어 보겠다.ExamRepository5번에 1번 정도 실패하는 저장소ExamServiceExamRepository로그 출력용 AOP를 먼저 만들어보
WAR 배포 방식의 단점내장 톰캣편리한 부트 클래스 만들기스프링 부트와 웹 서버스프링 부트 실행 가능 Jar웹 애플리케이션을 개발하고 배포하려면 다음과 같은 과정을 거쳐야 한다.톰캣 같은 웹 애플리케이션 서버(WAS)를 별도로 설치해야 한다.애플리케이션 코드를 WAR로
라이브러리 직접 관리스프링 부트 라이브러리 버전 관리스프링 부트 스타터프로젝트를 처음 시작하면 어떤 라이브러리들을 사용할지 고민하고 선택해야 한다. 예를 들어서 스프링WEB, 내장 톰캣, JSON 처리기, 로거 등등 수 많은 라이브러리를 선택해야 한다.라이브러리의 버전
예제 만들기 자동 구성 확인 스프링 부트의 자동 구성 자동 구성 직접 만들기 - 기반 예제 @Conditional 순수 라이브러리 자동 구성 라이브러리 자동 구성 이해 1. 예제 만들기 > springboot-autoconfig 프로젝트를 생성하였습니다. build
외부 설정 설정 데이터1 우선순위 1. 외부 설정 > springboot-external라는 프로젝트를 새로 생성하였습니다. 1-1. 설명 하나의 애플리케이션을 여러 다른 환경에서 사용해야 할 때가 있다. 개발 환경: 개발 서버, 개발 DB 사용 운영 환경: 운영
외부 설정 사용외부설정과 프로필2 - YAML외부설정과 프로필2 - @Profilespringboot-external-read 프로젝을 새로 만들었습니다.다양한 외부 설정 읽기스프링은 Environment 는 물론이고 Environment를 활용해서 더 편리하게 외부
프로덕션 준비 기능이란?액츄에이터 시작엔드포인트 설정다양한 엔드포인트헬스 정보애플리케이션 정보로거HTTP 요청 응답 기록액츄에이터와 보안운영 환경에서 서비스할 때 필요한 이런 기능들을 프로덕션 준비 기능이라 한다. 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적
마이크로미터 소개메트릭 확인하기다양한 메트릭프로메테우스그라파나5-5. 메트릭을 통한 문제 확인
메트릭 등록실무 모니터링 환경 구성 팁2\. 실무 모니터링 환경 구성 팁