Step by Step

Spring 공부 2021-03-12

unboxing 2021. 3. 7. 16:41

뉴렉처 스프링프레임워크 강의 1강

 

 

Spring 소개와 학습안내

 

spring.io 주소로 들어가  project 을 보면 스프링의 다양한 목록을 볼수있다

 

Dependency Injection, transaction management : 스프링 프레임워크의 핵심기능

( 종속성 주입 ) , ( 트랜잭션 관리 )

 

기업형 응용 프로그램을 보조하기 위한 쉬운 프레임워크

뉴렉처 Spring 1강 캡쳐

 

웹을 위한 스프링 프레임워크 모듈

MVC , 트랜잭션 , 인증과 권한 (웹개발의 중요요소)

( DI ) , ( AOP ) , (Servlet Filter )

뉴렉처 Spring 1강 캡처


 

느슨한 결합력과 인터페이스

 

소스코드를 구현해야함 수정할수있다. (결합력이 높다)

 

결합력을 낮추기위해서는 기능의 줄에서만 사용할 수 있는 자료형으로 바꾼다( 인터페이스 사용 )

 

뉴렉처 Spring 2강의 캡쳐

인터페이스를 사용하여 결함을 낮추는방법

 

Spring의 도움을 받으면 결합을 할때의 필요한 설정파일을 제공, 객체를 결합

 

Spring하면 두가지는 꼭 기억해야한다.

DI ( Dependency Injection )

IOC컨테이너 ( Iversion Of Control 컨테이너 ) 

 


DI ( Dependency Indection )

부품조립 ( 종속성 주입 )

스프링 프레임워크 코어기능 : 종속 객체를 생성 조립해주는 도구

 

 

뉴렉처 Spring 3강 캡쳐

 

기업들은 일체형보다는 조립형을 많이 선호한다.

 

DI  : 조립해야할 객체(부품)를 만들어서 조립하는 방법

뉴렉처 Spring 3강 캡쳐

 

 

방법

1) set함수를통해 조립 할수있다. (Seteer Injection)

   (ex) B b = new B();

         A a = new A();

         a.setB(b);

2) 생성자를 통해서 조립 할수있다. (Construction Injection)

   (ex) B b = new B();

         A a = new A(b);

장점 : 부품을 쉽게 바꿀수있다.

단점 : 부품을 조립해야하는 불편함.

 

 

Spring은 이 DI의 역할을 수행 해줄수있다.

사용자가 원하는 부품이 무엇인지 어떤 부품의 결합을 원하는지 설정을 하면 Spring이 수행해준다.

 


 

IoC(Inversion Of Control) 컨테이너

 

조립하기위해서는 Ioc 컨테이너가 필요하다.

 

Spring의 가장 기본적인(코어)에 해당하는능력은 부품조립능력

그러기위해선 여러가지 부품을 주문서에 입력해서 Spring에 제공해줘야한다.

 

xml이나 어노테이션(Annotation)으로 주문서를 작성 할 수 있다.

 

부품을 담을수 있는 컨테이너가 필요하다.

 

일반적으로 일체형 같은경우에는 정방향으로 객체 생성 순서가 매겨지고

부품형(DI) 같은 경우에는 역방향 으로 객체 생성 순서가 매겨진다.

 

역순으로 객체를 생성해주는 컨테이너 (DI를 담고있는 컨테이너) 를 IoC컨테이너라고 한다.

Ioc컨테이너는 단순하게 부품만 담고있는게아니라 결합(조립) 까지 해서 담을수있는 컨테이너다.


 

Denpendency를 직접 Injection 하기

 

예제를 다루기위해 뉴렉처 사이트 공지사항에서 다운로드받아왔다

일반적인 조립방법과 스프링을 사용한 조립방법을 알아본다.

 

자바프로젝트를 만들기위해 Perspective가 JavaEE로 되어있다면 Perspective를 Java로 바꾸어준다.

 

간단한 di를위한 프로젝트를 하나 추가해준다.

jdk 9이상 버전부터는 module이 새로 나왔지만 생성하지 않아도 상관없다.

 

패키지와 클래스를 준비하도록한다.

 

테스트하기위해 데이터를 가지고있는 entity 클래스와 entity를 활용해 출력을 담당하는 클래스를 추가해준다. 

 

entity(데이터를 가지고있는 클래스)

spring.di.entity 패키지 안의 Exam 인터페이스와 그것을 구현한 NewlecExam 클래스를 만들어준다.

Exam 인터페이스

NewlecExam 구현 클래스

Console (출력)

Program 클래스에 출력을 위한 클래스도 추가해준다.

인터페이스를 쉽게 추가하는방법 (클릭 interface)

spring.di.ui의 패키지에 인터페이스를 생성해준다.

ExamConsole 인터페이스 (출력을 하기위한 print()메소드를 만들기위한 인터페이스 생성

ExamConsole을 구현한 InlineExamConsole 클래스 생성

인터페이스를 이용해보기 위해서  (조립을 직접하는 작업 DI )

ExamConsole을 구현한 GridExamConsole 클래스 생성

 

Spring의 도움을 받아 소스코드를 변경하지않고 Inline 과 Grid를 바꿔 주는 방법

(설정을 외장으로 빼주는 작업을 대신해준다)

 

 

뉴렉처 스프링 5강완