Spring(20)
-
[Spring 핵심 원리 #3] 스프링 핵심 원리 이해 2
앞에서 진행해 온 프로젝트에서 새로운 할인 정책을 추가하는 요구사항이 발생했다는 가정 하에 진행하겠습니다. 할인 정책을 추가하게 되면 DIP, OCP를 지키지 못할 수도 있습니다. 이러한 문제를 해결하며 왜 스프링 컨테이너가 탄생했는지도 알아보겠습니다. 또한 앞에서 만든 순수 자바 코드를 스프링 컨테이너에서 동작하도록 바꿔보도록 하겠습니다. 이 카테고리에 있는 포스트는 인프런 김영한 강사님의 '스프링 핵심원리 - 기본편' 내용을 개인 공부용도로 정리한 것입니다. #1. 새로운 할인 정책 개발 기존에 정액 할인 정책이 아닌 정률 할인 정책에 대한 구현과 테스트를 작성해보겠습니다. hello.core/discount/RateDiscountPolicy package hello.core.discount; imp..
2021.07.23 -
[Spring 핵심 원리 #2] 스프링 핵심 원리 이해 1
프로젝트 생성 비즈니스 요구사항과 설계 회원 도메인 설계 회원 도메인 개발 회원 도메인 실행과 테스트 주문과 할인 도메인 설계 주문과 할인 도메인 개발 주문과 할인 도메인 실행과 테스트 이 카테고리에 있는 포스트는 인프런 김영한 강사님의 '스프링 핵심원리 - 기본편' 내용을 개인 공부용도로 정리한 것입니다. 1. 프로젝트 생성 역할과 구현을 나누어서 즉, 인터페이스와 구현 객체를 나눠 순수 Java로만 개발을 해보겠습니다. 순수한 자바로 진행하지만 프로그램 세팅에 있어서 편의를 위해 스프링으로 세팅하겠습니다. Requirement Java 11 설치 IntelliJ or Eclipse 스프링 부트 스타터 사이트로 프로젝트 생성 (https://start.spring.io/) 프로젝트 선택 Project:..
2021.07.16 -
[Spring 핵심 원리 #1.1] 객체 지향 설계와 스프링
이 카테고리에 있는 포스트는 인프런 김영한 강사님의 '스프링 핵심원리 - 기본편' 내용을 개인 공부용도로 정리한 것입니다. 객체 지향 설계와 스프링 스프링 핵심 원리 이해 1 - 예제 활용 스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 스프링 컨테이너와 스프링 빈 싱글톤 컨테이너 컴포넌트 스캔 의존관계 자동 주입 빈 생명주기 콜백 빈 스코프 자바 진영의 추운 겨울과 스프링의 탄생 과거 2000년대 초반에 자바 표준 기술 중 EJB(Enterprise Java Beans)가 제일로 불려져왔었습니다. 지금으로 본다면 Spring, JPA 등을 모두 제공하는 기술이라고 볼 수 있습니다. 실제로 당시에 기술 영업을 할 때도 EJB를 이용한 기술 영업을 많이 했었습니다. 하지만 가격이 매우 비싸다는 단점이 ..
2021.07.05 -
JWT
JWT JWT는 RFC 7519 웹 표준으로 지정되어 있습니다. JSON 객체를 이용해서 토큰 자체에 정보들을 저장하고 있는 Web Token이라 정의할 수 있습니다. JWT를 이용하는 방식은 아주 간편하고 쉽게 적용할 수 있어 사이드 프로젝트 등을 진행할 때 매우 유용합니다. JWT는 Header, Payload, Signature 3개의 부분으로 구성되어 있습니다. Header - Signature를 해싱하기 위한 알고리즘 정보 포함 Payload - 서버와 클라이언트가 주고받는, 시스템에서 실제로 사용될 정보 포함 Signature - 토큰의 유효성 검증을 위한 문자열입니다. 이 문자열을 통해 서버에서 이 토큰이 유효한지 검증할 수 있습니다. JWT의 장점 중앙의 인증 서버, 데이터 스토어에 대한 ..
2021.06.08 -
7. SpringBoot 입문 - AOP가 필요한 상황
AOP AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs. 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 문제점 회원가입, 회원 조회 등에 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 시간을 측정하는 로직은 공통 관심 사항이다. 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다. 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다. 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다. AOP 적용 AOP : Aspect Oriented Programming 공통 관심 사항과 핵심 관심 사항을 분리한다. package he..
2021.06.07 -
6. SpringBoot 입문 - Spring DB 접근 기술 - Spring Data JPA
H2 데이터베이스 설치 순수 JDBC Spring 통합 테스트 Spring JdbcTemplate JPA Spring Data JPA (JPA를 더 편리하게) 6. Spring Data JPA Spring Boot와 JPA만 사용해도 개발 생산성이 많이 증가하고 개발해야할 코드 또한 확연히 줄어듭니다. 여기에 스프링 데이터 JPA를 사용하면 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발을 완료할 수 있습니다. 그리고 기본 CRUD 기능도 스프링 데이터 JPA가 제공합니다. 스프링 데이터 JPA는 JPA를 편리하게 사용하도록 도와주는 기술로 JPA를 먼저 학습한 후 스프링 데이터 JPA를 학습해야 합니다. 스프링 데이터 JPA 생성 및 활용 방법 1. repository 패키지에 interface ..
2021.05.26