Back-End
-
스프링 핵심 원리 - 기본편 (3) 스프링 핵심 원리 이해2 - 객체 지향 원리 적용Back-End/Spring 2022. 8. 21. 23:31
📖 새로운 할인 정책 개발 만약 기획자가 정액 할인이 아닌 정률 할인으로 변경을 요구한다면? 귀여우심...ㅋㅋ RateDiscountPolicy 를 만들면 된다! public class RateDiscountPolicy implements DiscountPolicy { private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.getGrade() == Grade.VIP) { return price * discountPercent / 100; } else { return 0; } } } 💻 Test ctrl + shift + T : Create Test 📒 회원 등급이 VIP인 경우..
-
스프링 핵심 원리 - 기본편 (2) 스프링 핵심 원리 이해1 - 예제 만들기Back-End/Spring 2022. 8. 21. 23:31
📖 프로젝트 설정 https://start.spring.io/ dependencies 설치 후, gradle 새로 고침설정을 변경한 후에는 꼭 새로고침을 눌러주어야 한다! setting > gradlegradle로 실행하는 것보다 intellij로 실행하는 것이 더 빠르다! 📖 비즈니스 요구사항과 설계 👩 회원 가입과 조회가 가능 일반과 VIP 등급이 존재 데이터 툴 미정 (자체 DB를 사용하거나, 외부 시스템 연동) 💸 주문과 할인 정책 회원 상품 주문 가능 회원 등급에 따라 할인 정책 적용 가능 모든 VIP는 1000원을 할인해주는 고정 금액 할인 적용 (변경 가능) 할인 정책의 변경 가능성이 높음 (회사의 기본 할인 정책이 정해지지 않았고, 오픈 직전까지 고민 필요. 할인 미적용 가능성도 있음!) ..
-
스프링 핵심 원리 - 기본편 (1) 객체 지향 설계 스프링Back-End/Spring 2022. 8. 21. 23:31
EJB EJB 기반의 프로그래밍의 단점으로 인해 새로운 오픈 소스가 개발됨 📚 오픈 소스 🔸 스프링 EJB 컨테이너 대체 현재 사실상 표준 기술이 되었다! 🔸 하이버네이트 EJB 엔티티빈 기술을 대체 하이버네이트를 이용해 JPA(Java Persistence API)라는 새로운 표준의 정의 📚 JPA 🔸 JPA 구현체 하이버네이트 EclipseLink 기타 📚 Spring 스프링 DI 컨테이너 기술 스프링 프레임워크 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계 🔸 Spring의 역사 2002년 로드 존슨이 스프링 핵심 개념과 30,000 라인 이상의 기반 코드 예제들을 담은 책 출간 EJB의 문제점을 지적하며 EJB 없이도 충분히 고품질의 확장 가능한 애플리케이션 개발이 가능함을 보여..
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (7) AOPBack-End/Spring 2022. 8. 21. 23:30
AOP 📚 AOP가 필요한 상황 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 공통 관심 사항과 핵심 관심 사항을 분리 공통 관심 사항 (cross-cutting concern) 어플리케이션 전반에 걸쳐 적용되는 공통 기능 핵심 비즈니스 로직과 구분되는 기능 핵심 관심 사항 (core concern) 어플리케이션의 핵심 비즈니스 로직 📚 AOP 적용 AOP (Aspect Oriented Programming) 1. AOP code (예. 메서드 수행 소요 시간 계산) @Aspect public class TimeTraceAop { public Obje..
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (6) 스프링 DB 접근 기술Back-End/Spring 2022. 8. 21. 23:27
📚 H2 데이터베이스 설치 1) https://www.h2database.com/html/download-archive.html 1.4.200 버전 설치 2) h2\bin 디렉토리에서 h2.bat 실행 h2\bin> h2.bat 만약, 접속이 안될 경우 주소창의 IP 주소를 localhost로 바꾸어주면 된다. 3) 연결 클릭 4) 새 cmd 창을 열어 dir test.mv.db 가 생성되어있는 것을 확인 5) 소켓을 통해 접근할 수 있도록 url 변경 jdbc:h2:tcp://localhost/~/test 🔸 TABLE 생성 CREATE TABLE member ( id BIGINT GENERATED BY DEFAULT AS IDENTITY, name VARCHAR(255), PRIMARY KEY (id..
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (5) 회원 관리 예제 - 웹 MVC 개발Back-End/Spring 2022. 8. 14. 22:23
회원 웹 기능 - 홈 화면 추가 Hello Spring 회원 기능 회원 가입 회원 목록 도메인 : localhost:8080 controller가 존재하지 않으면 static file(index.html)을 찾음 controller가 존재하면 해당 html 파일을 찾음 ▶ 우선순위가 home.html > index.html 회원 웹 기능 - 등록 1) 회원 가입 링크를 누르면 도메인 요청(GET) : localhost:8080/members/new @GetMapping("/members/new") public String createForm() { return "members/createMemberForm"; } 2) 이름을 입력한 후, 등록 버튼을 누르면 POST 요청 @PostMapping("/mem..
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (4) 스프링 빈과 의존관계Back-End/Spring 2022. 8. 14. 22:21
스프링 빈과 의존관계 스프링 빈에 등록되면 의존관계가 성립할 수 있다. 스프링 빈 등록 방법 1) 컴포넌트 스캔 2) 자바 코드로 직접 스프링 빈 등록 controller와 Member service의 의존 관계 Member controller가 Member service를 통해 데이터에 접근하고 조회할 수 있어야 한다.Member controller는 Member service에 의존한다. 컴포넌트 스캔과 자동 의존관계 설정 Spring Container 웹 서버가 spring container에게 요청을 전달하면 spring container는 정의된 controller 객체를 생성하고 관리 (@Controller annotation) spring container는 @Controller annota..
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (3) 회원 관리 예제 - 백엔드 개발Back-End/Spring 2022. 8. 14. 22:19
회원 관리 1) 비즈니스 요구사항 정리 2) 회원 도메인과 리포지토리 만들기 3) 회원 리포지토리 테스트 케이스 작성 4) 회원 서비스 개발 5) 회원 서비스 테스트 1) 비즈니스 요구사항 정리 데이터 : 회원ID, 이름 기능 : 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음 (가상의 시나리오) 컨트롤러 : 웹 MVC 컨트롤러 역할 (컨트롤러 또는 API 정의) 서비스 : 핵심 비즈니스 로직 구현 (중복 가입 불가 등) > 비즈니스 도메인 객체를 이용해 로직 구현 도메인 : 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등 주로 데이터베이스에 저장하고 관리됨 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 alt + enter : interface 자동 implements..