week 2 WIL -0927

송지은·2021년 9월 26일
0

주차별 WIL

목록 보기
1/1
post-thumbnail

IoC와 Di, Bean 의 개념을 이해하기 앞서서
스프링의 핵심적인 구조를 파악하고
프레임워크에 대해서 이해하는 것이 먼저 필요할듯.

처음에 단어만 검색해서 찾으니
도통 무슨 말인지 알아 들을수가 없었다;;;

1.스프링의 핵심

-스프링은 자바 언어 기반의 프레임 워크
-자바 언어의 가장 큰 특징 !
객체 지향 언어 - 객체 하나하나가 모여 프로그램이 만들어짐
그리고 객체들의 모이고, 메세지를 주고받고 데이터를 처리할 수 있다.

스프링은 객체 지향 언어가 가진 강력한 특징을 살려낸 프레임 워크 !
(프레임워크?- 소프트웨어의 구체적인 부분에 해당하는 설계와 구현하는 부분을 재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는것.)

so

스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임 워크

객체 지향 어플리케이션을 개발할 설계와 구현을 재사용,
즉 우리가 개발자가 재사용이 가능하게끔 일련의 협업화된 형태로
클래스들을 제공하는 것이다.

***여기서 좋은 객체 지향 애플리케이션이란?

유연하고 변경이 용이

컴포넌트(재사용이 가능한 독립된 모듈)를 쉽고 유연하게 변경하면서 개발할 수 있음

다형성
본질 - 인터페이스를 구현한 객체 인스턴스를 실행시점에서 유연하게 변경할 수 있다.
다형성의 본질을 이해하려면 협력이라는 객체 사이의 관계에서 시작해야함
클라이언트를 변경하지 않고 , 서버의 구현기능을 유연하게 변경할 수 있다.

클라이언트는 대상의 역할(인터페이스)만 알면된다.,
클라이언트는 구현 대상의 내부 구조를 몰라도 된다.
클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않는다.

스프링 빈과 의존관계, D.I(Dependency Injection)

스프링 컨트롤러가 서비스와 리포지토리를 사용할 수 있게 의존관계를 준비하자.

스프링 컨트롤러가 ' 나 컨트롤러야 !!;
이것은 CONTROLLER 이 글자 그대로에서 나오는 것이 아니다.
컨테이너라는것을 컴퓨터에게 알려주기 위해서는
(스프링 컨테이너에 들어가기 위해서는)
@Controller라는 어노테이션을 붙혀줘야한다.
이제 컨트롤러로써의 특별 관리 대상이 되는것임.

같은 맥락으로, 서비스도 이아이가@Service를 달아 줌으로써
이 아이가 서비스의 기능을 할것이란것을 알려줌
Repository도 똑같이 @Repository

이것은 굉장히 정형화된 스프링에서 꼭 필요한 아이들이기 때문에 붙혀줘야함

Controller, Service, Repository
이 세가지는 서로 상호작용 하는 아이들이고 서로 의존함
이 의존 관계를 정립시켜 주기 위해서는 개발자가 서로가 무엇인지 알려줘야함
의존 관계를 주입시켜 주는것임
D.I (Dependency Injection)
의존 주입 ;;
단어가 엄청 추상적이라고 생각했는데
알고나니...
완죠니 직관적이다;;;;;

Spring ioc Container

IoC - Inversion of Control(제어의 주체가 바뀜)
우리가 여태 코드를 작성하면서
개발자가 코드의 흐름,
제어의 주체였다면,

스프링에서는 프레임 워크가 주체가 된다.
결국 우리는 스프링의 프레임 워크를 따라 가야 한다.
우리가 아닌 외부에서 객체를 생성하고 관리한다.

참고로 여기서 말하는 객체라는 의미는,
객체의 제어권을 갖는 것이 컨테이너이다.

스프링에서 사용되는 IoC란 객체가 내부적으로 조작할 객체를 직접 생성하지 않고,
외부로부터 주입 받는 기법을 의미한다.
객체를 외부로부터 주입해주는 작업을 DI(의존성 주입)이라고 한다.

Dependency Injection..
이 단어를 처음 봤을때는
뭔 뜬구름 같은 추상적인 개념같았는데,
알고나니 매우 직관적인 말이였다;;

스프링에서 containter는 BeanFactory와 Application Context인데
Bean을 만들고 서로를 엮어주는 역할을 한다.

스프링 Bean의 개념

spring ioc 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다.
(여기서 객체는 우리가 직접 class생성하고 new 입력해서 만든 객체가 아니라,
스프링에 의하여 생성되고 관리되는 자바 객체를 Bean 이라고 합니다.)

아 근데..bean ..이걸 막 찾아보고 작성하는데
남병관튜터님의.. 스프링 2주차 강의에서
네발자전거이론이 생각난다..
튜터님저는 심지어 아직 걸음마도 안뗐는걸요??;-;
이게 키워드로 나올줄이야…

-스프링 빈을 등록하는 방법-
이렇게 골뱅이 어노테이션을 달아 주는 방법이
컴포넌트 스캔이고 자동으로 의존관계를 설정하는 것임

컨트롤러에다가 어노테이션을 붙히면
얘가 스프링 통 (컨테이너)에 들어 가게 되고,
컨트롤러로써의 특별 관리를 받게 됩니다.

하 이제 진짜 이번주차의 회고 한번 해야겠다 흑흑

얼른 강의를 모두 마쳐야 하는데
자바의 기본적인 개념이 아직 잘 잡히지 않은 상태여서
1 2 3 주차를 많이 들었다
아직 이해는 다 가지는 않는다.

하지만

1.객체 지향 언어는 왜 객체 지향 언어인가
(이것은 스터디에서 산하님이 엄청 잘 설명해주셨다^^)

자바는 전부다 클래스로 모여있자나!! 객체도 알고보면 클래스로 만들어 지는데
왜 클래스 지향 언어가 아닌가?
에 대해서 생각을 해보았을때

적절한 비유가 빵이였다
빵틀은 클래스고 빵은 객체이다
빵틀로 프로그램은 이루어 질수 없다.

빵이 프로그램을 이루게 하는것!!!!

아 엄청 한방에 날려주는 코멘트가 있었는데
하 기억이 안난다
(이런건 어디다 써놓았어야 했는데...ㅜㅜㅜㅜ)

  1. Class의 개념과 인스턴스화에 대한 개념

일단 나만 알아보면 된다...
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

결국 코스공장에서 Class Course라는 설계도를 가지고
course1,2,3 ....를 찍어 내는 그림이다;;

저렇게 나온 따끈따끈한 course 1 ,2 ,3 ....들을
인스턴스 즉 객체라고 한다.

다음주의 나에게..

그래도 처음 시작보다는 이제 조금 ... 남들 이야기하는것도 알아 듣는것 같다.
스프링 같이 하시는 분들이랑 스터디하다가
멘탈이 와르르 무너졌지만..

저 못하겠어요 라는 말이 1주차의 나처럼 목청 끝까지 올라 왔지만
잘 버텼다.

와 새벽 네시반...

3주차의 나에게도
딱히 특별히 할말은 없고
존버하자..................

profile
꧁⍢⃝꧂ All about codes in my brain ꧁⍢⃝꧂

0개의 댓글