본문 바로가기

Spring핵심원리6

[Springboot] 의존관계 자동 주입 방법 정리 [김영한님의 스프링 핵심 원리-기본편을 학습 후 정리한 내용입니다.] 우리는 이전에 Appconfig이라는 설정클래스를 하나 정의해서 @Configuration, @Bean을 통해서 직접 빈 등록을 했다. 이렇게 빈등록과 의존관계 설정을 수동으로 하는 방법도 있지만, 설정파일을 써내려가기에는 현실적으로 너무 복잡할 뿐 아니라 귀찮다,, 따라서 스프링이 지원하는 의존관계 자동주입에 대해서 알아보자. 1. 생성자주입 생성자를 통해서 의존관계를 주입하는 방법이다. 아래 코드를 보면 OrderServiceImpl객체를 new해서 생성할 때 memberRepository와 DiscountPolicy가 주입되는 것을 볼 수 있다. 사실 실무에서는 몇몇의 케이스를 제외하고는 대부분 운영중간에 의존관계를 바꿀 일이 없.. 2022. 7. 28.
[Springboot] 컴포넌트 스캔과 의존관계 자동주입 정리 [김영한님의 스프링 핵심 원리-기본편을 학습 후 정리한 내용입니다.] 지금까지의 강의에서는 빈을 등록하고, 의존관계를 주입할 때 @Bean 어노테이션을 붙여서 스프링컨테이너에 알려주었다. 하지만 예제가 아닌 실무에서는 등록해야 할 빈이 정말 많아지기 때문에, 설정정보가 없어도 스프링 빈을 등록하는 컴포넌트스캔이라는 기능을 사용한다. @ComponentScan을 사용하면 어떻게 되나? @ComponentScan을 붙이면 같은 패키지 내의 @Component가 명시된 클래스들을 자동으로 빈에 등록해준다. (@Configuration이 컴포넌트스캔의 대상이 된 이유도 소스코드에 @Component이 명시되어 있기 때문이다.) 게다가 이제는 아래 코드와 같이 우리가 사전에 정의했던 Appconfig설정정보를 사.. 2022. 7. 25.
[Springboot] 싱글톤 컨테이너 개념 정리 [김영한님의 스프링 핵심 원리-기본편을 학습 후 정리한 내용입니다.] 싱글톤이란? 웹 어플리케이션은 많은 고객들의 무수한 요청에 대해서 응답을 해야한다. 고객들의 요청마다 Bean의 생성자가 호출된다면,, 10000명의 고객이라고 했을 때 10000개 혹은 그 이상의 객체가 생성된다. 즉, 메모리 낭비가 필수불가결하다. 바로 여기서 등장한 것이 싱글톤이라는 개념이다. 싱글톤은 말 그대로 여러 생성자가 호출되더라도 1개의 객체만을 생성해서 공유하는 디자인 패턴을 뜻한다. 싱글톤 패턴으로 만드려면 어떻게 해야할까? //샘플코드 package hello.core.singleton; public class SingletonService { private static final SingletonService in.. 2022. 7. 24.
[Springboot] 스프링 컨테이너 & 스프링 빈 개념 정리 [김영한님의 스프링 핵심 원리-기본편을 학습 후 정리한 내용입니다.] 스프링 컨테이너의 생성 & 스프링 빈 등록 과정 스프링 컨테이너는 먼저 아래와 같이 생성된다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Appconfig.class); ApplicationContext(인터페이스) : 스프링 컨테이너 AnnotationConfigApplicationContext : ApplicationContext의 구현체 스프링 컨테이너는 파라미터로 넘어온 클래스 정보(여기서는 Appconfig)를 사용해서 스프링 빈을 등록한다. Appconfig의 4가지 메서드의 이름이 빈 이름이 되고, 빈 객체는 클래스명이 된다... 2022. 7. 23.
[Springboot] 객체 지향 설계를 위한 AppConfig 구성 [김영한님의 스프링 핵심 원리-기본편을 학습 후 정리한 내용입니다.] 스프링 핵심원리 강의를 듣던 중 다형성을 최대한 활용하여 프로그래밍을 하는 과정을 보면서.. 간단해 보이는 예제였음에도 불구하고 매우매우 잘 설계했다는 것이 느껴졌다. 스프링이 지원하는 기능을 사용하지 않고 자바코드만으로 좋은 객체지향 5원칙 SOLID를 따르도록 설명해주시는 교수님 강의 덕분에 스프링을 사용하는 근본적인 이유에 대해서 보다 잘 이해할 수 있었다. 물론 현재 대부분의 개발자들은 @Configuration을 사용해서 스프링빈에 등록하지만 실제로 AppConfig를 만들어보면서 객체지향의 대단함을 느낄 수 있었다!! 전체흐름을 구성한 클래스 다이어그램은 다음과 같다. OrderService라는 주문서비스 인터페이스를 구현한.. 2022. 7. 22.
[Springboot] 좋은 객체 지향 프로그래밍과 스프링 [김영한님의 스프링 핵심 원리-기본편을 학습 후 정리한 내용입니다.] 객체지향 프로그래밍이란? 대학교 전공수업에서 보통 우리는 객체지향프로그래밍이라는 단어를 접하게 된다. 자바라는 언어를 배울 때, 자바라는 언어는 객체지향적인 언어라는 것을 알게된다. 다양한 클래스를 만들어서 객체를 생성하고, 그 객체 사이의 연결, 교류하여 프로그래밍하곤 하는데, 바로 이런 객체 지향 프로그래밍 기법을 도와주는 것이 바로 스프링 프레임워크이다. 객체 지향 프로그래밍을 하기 위해 서는 캡슐화, 추상화, 상속, 다형성을 잘 이해하고 있어야 한다. 그 중, 객체 지향 패러다임 중 가장 핵심이라고 할 수 있는 다형성이라는 특징을 잘 이해하고, 사용해야 한다. 이제 다형성이라는 것에 대해 알아보자. 다형성 (Polymorphis.. 2022. 7. 20.