Backend/Spring - Core

본 글들은 인프런 김영한 강사님께 저작권이 있습니다.
Backend/Spring - Core

Spring #7. 컴포넌트 스캔

스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 컴포넌트 스캔과 의존관계 자동 주입 시작하기 스프링 빈을 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해 설정 정보에 직접 등록할 스프링 빈을 나열하였다. 그러나 이렇게 등록해야 할 스프링 빈이 수십, 수백개가 되면 일일이 등록하기가 어렵고 설정 정보가 커지거나 누락하는 문제가 발생할 수 있다. 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 @ComponentScan이라는 기능을 제공하고, 의존관계를 자동 주입해주는@Autowired라는 기능도 제공한다. 코드로 살펴보자. AutoAppConfig @Configuration @ComponentScan( ..

Backend/Spring - Core

Spring #6. 싱글톤 컨테이너

스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 싱글톤 패턴 이전에 만들었던 스프링 없는 순수한 DI컨테이너인 AppConfig는 요청이 들어올 때 마다 객체를 새로 생성한다. 아래 코드로 확인해보자. SingletonTest public class SingletonTest { @Test @DisplayName("스프링 없는 순수한 DI 컨테이너") void pureContainer() { AppConfig appConfig = new AppConfig(); //1. 조회: 호출할 때 마다 객체를 생성 MemberService memberService1 = appConfig.memberService(); //2. 조회: ..

Backend/Spring - Core

Spring #5. BeanFactory와 ApplicationContext

스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. BeanFactory와 ApplicationContext BeanFactory와 ApplicationContext에 대해서 알아보겠다. 1.1 BeanFactory BeanFactory는 스프링 컨테이너의 최상위 인터페이스다. 스프링 빈을 관리하고 조회하는 역할을 담당한다. getBean()을 제공하며, 여태 사용하였던 대부분의 기능은 BeanFactory가 제공하는 기능이다. 1.2 ApplicationContext BeanFactory 기능을 모두 상속받아서 제공한다. 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데, 그러면 둘의 차이가 뭘까? 애플리케..

Backend/Spring - Core

Spring #4. 스프링 컨테이너와 스프링 빈

스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 스프링 컨테이너 1.1 스프링 컨테이너 생성 다음은 스프링 컨테이너가 생성되는 과정이다. // 스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext : 스프링 컨테이너 ApplicationContext는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로도 만들 수 있다. 직전에 AppConfig를 사용했던 방식이 어노테이션 기반의 자바 설정 클래스..

Backend/Spring - Core

Spring #3. 객체 지향 원리 적용 (2)

스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글의 모든 소스코드와 사진의 저작권은 김영한 강사님께 있습니다. 1. 좋은 객체 지향 설계 적용 이전 글 Spring #3. 객체 지향 원리 적용 - (1) 글에서는 SRP, DIP, OCP를 적용한다. 하나하나씩 살펴보겠다. 좋은 객체 지향 설계의 5가지 원칙(SOLID)는 여기를 클릭하면 더 자세히 알 수 있다. 1.1 SRP - 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 클라이언트는 객체는 직접 구현 객체를 생성하고, 연결하고, 실행하는다양한 책임이 있다. 따라서, SRP 단일 책임 원칙을 따르면서 관심사를 분리하는것이 중요하다. 앞의 Spring #3. 객체 지향 원리 적용 (1)의 글의 코드를 다시 살펴보면, 구현 객체를 생성하..

Backend/Spring - Core

Spring #3. 객체 지향 원리 적용 (1)

스프링 핵심 원리 - 기본편의 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 할인 정책 적용과 문제점 이전글 비즈니스 요구사항과 설계에서 나오는 코드들을 활용하여 객체 지향 원리에 대하여 알아보겠다. 할인 정책에는 고정 할인 정책인 FixDiscountPolicy와 정률 할인 정책인 RateDiscountPolicy가 존재한다. 따라서, 원하는 할인 정책을 애플리케이션에 적용하려면 클라이언트인 OrderServiceImpl의 코드를 변경하여야 한다. public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixD..

Backend/Spring - Core

Spring #2. 스프링 핵심 원리 기본편 - 비즈니스 요구사항과 설계

스프링 핵심 원리 - 기본편 복습을 위한 글이며 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. 비즈니스 요구사항과 설계 이후 글에서 다룰 예제에 대한 비즈니스 요구사항과 설계를 먼저 살펴보겠다. 지금은 스프링을 사용하지 않는 순수 자바 코드로 개발해보겠다. 스프링 관련해서는 뒷 챕터에 나온다. - 회원 가입과 조회 - 회원 등급은 BASIC과 VIP 두 가지 등급이 존재 - 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동 가능(미확정) - 회원은 상품 주문 가능 - 회원 등급에 따라 할인 정책 적용 가능 - 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 할인 금액 적용.(후에 변경가능성 있음) - 할인 정책은 변경 가능성이 높음. 요구사항을 보..

Backend/Spring - Core

Spring #1. Spring 프레임워크 기본 개념

스프링 핵심 원리 - 기본편의 복습을 위한 글이며, 이 글에 나오는 모든 소스코드의 저작원은 인프런의 김영한 강사님께 있습니다. 1. Spring? Spring이 무엇인가에 대하여 설명하기 앞서, Framework의 개념부터 살펴보겠다. 1.1 Framework FrameWork란 어플리케이션 개발에 바탕이 되는 템플릿과 같은 역할을 하는 클래스들과 인터페이스의 집합이다. 즉, 프로그램의 전체적인 구조와 흐름을 확정지으며, 프로그래머가 정의해야할 메소드의 이름까지 결정짓는 역할까지 한다. 1.2 Spring Framework Spring도 마찬가지로 프레임워크의 한 종류이다. 스프링 공식 규격에 따르면 Spring Framework는 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 ..

Backend/Spring - Core

Spring #0. Annotation

Annotation Annotation(@)은 사전적 의미로 주석이라는 뜻이다. 자바에서Annotation(@)은 코드 사이에 주석처럼 쓰이며, 특별한 의미, 기능을 수행하도록 하는 기술이다. 즉, 프로그램에게 추가적인 정보를 제공해주는 '메타 데이터'라고 볼 수도 있다. 메타 데이터(Meta Data) : 데이터를 위한 데이터 Annotation(@)은 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공하고, 소프트웨어 개발 툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공하는 역할도 한다. 또한, 실행 시(런타임 시) 특정 기능을 실행하도록 정보를 제공한다. Spring 관련 Annotation @Bean @Bean은 개발자가 직접 제어가 불가능한 외부 라이브러리등을 Bean으..

SeongJun Han
'Backend/Spring - Core' 카테고리의 글 목록 (2 Page)