본 게시글은 김영한 강사님의 [스프링 핵심 원리 - 기본편]을 수강하며 작성한 글입니다. 스프링 컨테이너 생성 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext는 스프링 컨테이너이다. 이는 인터페이스인데, 이를 구현한 클래스가 AnnotationConfigApplicationContext이다. 스프링 컨테이너는 XML로도, 애노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 💡 더 정확히는 스프링 컨테이너를 부를 때 BeanFactory, ApplicationContext로 구분한다. 뒤에서 더 자세히 배우겠지만, BeanF..
Courses/Spring
본 게시글은 김영한 강사님의 [스프링 핵심 원리 - 기본편]을 수강하며 작성한 글입니다. 새로운 할인 정책 개발 어느 날 기획자가 새로운 할인 정책인 정률 할인 정책을 추가해달라고 요구한다. 구현체를 하나 추가로 개발하면 될 듯 하지만, 몇 가지 문제점이 발생한다. 이 문제점을 해결하다 보면 여러 과정을 거치게 되고 자연스럽게 스프링의 핵심 기능인 스프링 컨테이너가 왜 탄생했는지 알게 된다. 정률 할인 정책 개발 public class RateDiscountPolicy implements DiscountPolicy{ private int discountPercent = 10; @Override public int discount(Member member, int price) { if (member.get..
본 게시글은 김영한 강사님의 [스프링 핵심 원리 - 기본편]을 수강하며 작성한 글입니다. 스프링을 사용하지 않고 순수한 자바로만 개발을 해보자. 이를 통해 왜 스프링이 필요한지 깨달아야 한다. 프로젝트 환경 구성 Language: Java 11 IDE: IntelliJ 비즈니스 요구사항 회원 회원 가입과 조회 기능이 있다. 회원은 일반과 VIP 등급이 있다. 회원 데이터는 자체 DB를 구축하거나 외부 시스템과 연동할 수 있다. (미정) 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인하는 고정 금액 할인을 적용해달라. (나중에 변경될 수 있다.) 할인 정책은 변경될 가능성이 높다. 회사의 기본 할인 정책을 아직 ..
본 게시글은 김영한 강사님의 [스프링 핵심 원리 - 기본편]을 수강하며 작성한 글입니다. 스프링의 핵심 개념 스프링을 잘 사용하기 위해서는 등장한 이유와 핵심 개념을 이해해야 한다. 스프링은 자바 언어 기반의 프레임워크이며, 객체 지향 언어(자바)가 가진 강력한 특징을 살려내기 위해 등장했다. 즉, 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 도구이다. 그렇다면 자바가 가진 강력한 특징은 무엇이며, 좋은 객체 지향 프로그래밍은 무엇일까? 좋은 객체 지향 프로그래밍이란? 좋은 객체 지향 프로그래밍이란, 객체들을 레고 블럭 조립하듯 유연하고 변경이 용이하도록 개발하는 것을 말한다.여기서 말하는 유연하고 변경 용이함을 제공하는 객체 지향의 특징이 바로 다형성이다. 다형성을 실세계에 비유했을..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 1. AOP가 필요한 상황 1) AOP가 필요한 상황 모든 메서드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? 2) MemberService에 시간 측정하는 로직 추가 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import org.springframe..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 1. H2 데이터베이스 설치 1) 실행 H2 Database Engine 설치 다운받은 파일의 압축을 풀고 /h2/bin/으로 이동 h2.sh를 실행시키기 위해 권한 부여 chmod 755 h2.sh h2.sh 실행 ./h2.sh 2) DB 접속 최초 DB 접속 JDBC URL: jdbc:h2:~/test ~/test.mv.db 파일 생성 확인 이후 DB 접속 JDBC URL: jdbc:h2:tcp://localhost/~/test 3) Member 테이블 생성 1. SQL문을 사용하여, 이전의 회원관리 예제에서 사용되던 Member 테이블을 생성한다. create table ..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 1. 회원 웹 기능 - 홈 화면 추가 1. HomeController 파일 생성 package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } 2. resources/templates/home.html ..
본 게시글은 김영한님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술]을 수강하며 작성한 글입니다. 스프링 빈을 등록하는 2가지 방법 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록하기 1. 컴포넌트 스캔과 자동 의존관계 설정 @Component 어노테이션을 붙이면 자동으로 스프링 빈으로 등록되고, 스프링 컨테이너에서 관리된다. @Component를 포함하는 다음 어노테이션도 스프링 빈으로 자동 등록된다. @Controller @Service @Repository 1) Controller → Service MemberController package hello.hellospring.controller; import hello.hellosprin..