핵심 기술: 스프링 DI 컨테이너, AOP, 이벤트, 기타웹 기술: 스프링 MVC, 스프링 WebFlux데이터 접근 기술: 트랜잭션, JDBC, ORM 지원, XML 지원기술 통합: 캐시, 이메일, 원격접근, 스케줄링테스트: 스프링 기반 테스트 지원언어: 코틀린, 그루

객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉, "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (객체끼리 서로 협력하여 하나의 프로그램을 만드는 형
클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리SRP: 단일 책임 원칙 (single responsibility principle)OCP: 개방-폐쇄 원칙 (Open/closed principle)LSP: 리스코프 치환 원칙 (Liskov s
스프링 이야기에 왜 객체 지향 이야기가 나오는가?스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원DI(Dependancy Injection): 의존관계, 의존성 주입DI 컨테이너 제공클라이언트 코드의 변경 없이 기능 확장쉽게 부품 교체하듯이 개발스프링이
위와 같이 객체를 생성하고 변수를 private로 선언하고 변수를 읽고, 수정하는 getter, setter 함수를 만들어서 사용하는 이유는 캡슐화의 원칙을 따르기 위해서이다. 캡슐화는 객체 지향 프로그래밍의 핵심 원칙 중 하나로, 객체의 상세한 내부 구현을 숨기고 외

다음과 같이 MemberSerive의 구현체를 구현했을 때지금은 보면 private final MemberRepository memberRepository = new MemoryMemberRepository();이런 식으로 MemberRepository 인터페이스에도
지금 까지의 흐름을 정리해보자.새로운 할인 정책 개발새로운 할인 정책 적용과 문제점관심사 분리AppConfig 리팩토링새로운 구조와 할인 정책 적용다형성 덕분에 새로운 정률 할인 정책 코드를 추가로 개발하는 것 자체는 아무 문제가 없음새로 개발한 정률 할인 정책을 적용

기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다. 한마디로 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다. 개발자 입장에서는 자연스러운 흐름이다.반면에 AppConfig가 등장한 이후에 구현 객체는 자신의 로직
지금까지 순수한 자바 코드만으로 DI를 적용했다. 이제 스프링을 사용해보자.지금은 코드만 작성하고 설명은 마지막에 하겠다.AppConfig 스프링 기반으로 변경AppConfig에 설정을 구성한다는 뜻의 @Configuration을 붙여준다.각 메서드에 @Bean을 붙여

스프링 컨테이너가 생성되는 과정을 알아보자.ApplicationContext를 스프링 컨테이너라고 한다.ApplicationContext는 인터페이스이다.스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다.직전에 Ap

beanfatory와 applicationcontext에 대해서 알아보자BeanFactory스프링 컨테이너의 최상위 인터페이스이다.스프링 빈을 관리하고 조회하는 역할을 담당한다.getBean() 을 제공한다.지금까지 우리가 사용했던 대부분의 기능은 BeanFactory

스프링은 어떻게 다양한 설정 형식을 지원하는 것일까? 그 중심에는 BeanDefinition 이라는 추상화가 있다.쉽게 이야기해서 역할과 구현을 개념적으로 나눈 것이다.XML을 읽어서 BeanDefinition을 만들면 된다.자바 코드를 읽어서 BeanDefinitio

스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다.대부분의 스프링 애플리케이션은 웹 애플리케이션이다. 물론 웹이 아닌 애플리케이션 개발도 얼마든지 개발할 수 있다.웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다.우리가 만들었던 스프링 없는 순수

스프링 컨테이너는 싱글톤 패턴의 문제점을 해결하면서, 객체 인스턴스를 싱글톤(1개만 생성)으로 관리한다.지금까지 우리가 학습한 스프링 빈이 바로 싱글톤으로 관리되는 빈이다.싱글톤 컨테이너스프링 컨테이너는 싱글톤 패턴을 적용하지 않아도, 객체 인스턴스를 싱글톤으로 관리한

지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 bean 태그 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다.예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커

지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean이나 XML의 bean 태그 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다.예제에서는 몇개가 안되었지만, 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커
의존관계 주입은 크게 4가지 방법이 있다.생성자 주입수정자 주입 (setter 주입)필드 주입메서드 주입이름 그대로 생성자를 통해서 의존 관계를 주입 받는 방법이다.지금까지 우리가 진행했던 방법이 바로 생성자 주입이다.특징생성자 호출시점에 딱 1번만 호출되는 것이 보장
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다.이번시간에는 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻