3-2기 스터디/Spring 입문7 [9주차] 5. 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링 애플리케이션 -> 대부분 웹 -> 웹 어플리케이션은 대부분 동시요청 (ex. AppConfig.java) 요청마다 객체를 만들어냄 .... import hello.core.AppConfig; import hello.core.member.MemberService; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; public class SingletonTest { @Test @DisplayName("스프링 없는 순수 DI 컨테이너") void pureContainer() { AppConfig appConfig = ne.. 2022. 6. 22. [6주차] 스프링 핵심 원리 이해1 - 예제 만들기 Section 2. 스프링 핵심 원리 이해1 - 예제 만들기 📌 목차 1. 프로젝트 생성 2. 비즈니스 요구사항과 설계 3. 회원 도메인 3-1. 회원 도메인 설계 3-2. 회원 도메인 개발 3-3. 회원 도메인 실행과 테스트 4. 주문과 할인 도메인 4-1. 주문과 할인 도메인 설계 4-2. 주문과 할인 도메인 개발 4-3. 주문과 할인 도메인 실행과 테스트 프로젝트 생성 일단 스프링을 사용하지 않고 순수 자바를 이용해 예제를 만들어 본 후, 불편한 점을 스프링으로 개선해보기 스프링 부트 스타터 사이트를 통해 스프링 프로젝트를 생성하고 초기 세팅하기 프로젝트 선택 Project: Gradle Project Spring Boot: 2.6.x (SNAPSHOT, M 버전 제외 가장 높은 버전으로) Lang.. 2022. 5. 20. [5주차] 객체 지향 설계와 스프링 1. 이야기 - 자바 진영의 추운 겨울과 스프링의 탄생 자바 진영에서 표준 기술 EJB (Enterprise Java Beans) 당시 EJB를 앞세워서 영업했다 → 컨테이너, 트랜잭션 관리, 분산 기술 지원이 good BUT EJB 지옥... 어렵고 복잡하고 느리다.. 게다가 너무 비싸다.. ‘다시 Java로 돌아가자’라는 의견도 있었다고 한다 스프링 Rod Johnson EJB 컨테이너 대체 단순함의 승리 현재 사실상 표준 기술 하이버네이트 EJB 엔티티빈 기술을 대체 JPA(Java Persistence API) 새로운 표준 정의 스프링의 역사 (전설의 시작) 2002년 Rod Johnson이 책 출간 EJB의 문제점 지적 EJB가 없어도 충분히 고품질의 확장 가능한 애플리케이션을 개발할 수 있다!.. 2022. 5. 11. [4주차] AOP 1. AOP가 필요한 상황 🌱 모든 메소드의 호출 시간을 측정하고 싶다면? 메소드 시작과 끝에 메소드 호출시간 코드 집어넣기 (시간 측정 로직을 모든 메소드에 다 집어넣기) public Long join(Member member) { long start = System.currentTimeMillis(); try { //핵심 비지니스 로직 } finally { long finish = System.currentTimeMillis(); long timeMs = finish - start; System.out.println("join " + timeMs + "ms"); } } try - finally 구문 사용 try 내부 : 핵심 비지니스 로직 finally : 시간 측정 로직 (핵심 비지니스 로직이 끝날.. 2022. 5. 4. [3주차] 스프링 DB 접근 기술 섹션 6 : 스프링 DB 접근 기술 데이터베이스에 데이터를 저장하고 관리해보자 H2 데이터베이스 설치 개발이나 테스트 용도로 용량도 가볍고 편리한 DB이다. 교육용으로 많이 쓰인다. h2.sh 파일을 실행하고 창이 뜰 때 localhost로 접속하면 웹 화면이 뜬다. 해당 화면을 통해 데이터베이스를 연결할 수 있다. SQL문을 사용해 테이블 관리를 할 수 있다. 순수 JDBC 20년 전에 사용하던... 기존에 메모리에 저장하던 방식을 없애고, JDBC 버전의 멤버 리포지토리를 이용하게 된 것이다. 개방-폐쇄 원칙(OCP, Open-Closed Principle)이라고 한다. 확장에는 열려있고 수정에는 닫혀있다는 뜻이다. 스프링의 DI (Dependencies Injection)을 사용하면 기존 코드를 전.. 2022. 5. 4. [2주차] 회원 관리 예제, 스프링 빈과 의존관계 | 3. 회원 관리 예제 - 백엔드 개발 🌱 비즈니스 요구사항 정리 데이터 : id, name 기능 : 회원 등록, 조회 일반적인 웹 어플리케이션의 계층구조 컨트롤러 : 웹 MVC 의 컨트롤러 역할 서비스 : 핵심 비즈니스 로직 구현 리포지토리 : 데이터베이스에 접근하고 도메인 객체를 DB 에 저장하고 관리 도메인 : 비즈니스 도메인 객체 ex. 회원,주문,쿠폰 등등 데베에 저장후 관리 클래스 의존관계 🥐 MemberService 🍞 MemberRepository (Interface) 🥯 MemoryMemberRepository 🌱 회원 도메인과 리포지토리 만들기 + 테스트 회원 객체 (Member) package com.example.hellospring.domain; public class Membe.. 2022. 5. 4. 이전 1 2 다음