- 이번주에 배운 점
-이번주 주말은 Java가 부족하다고 판단되어 메타코딩의 java강의를 들었다.
-클래스의 개념과 오브젝트, 객체 그리고 java가 실행될때의 메모리구조를 이해하는데 집중해서 공부했다
-이제 아주약간은...수학을 예로들면 문제와 수학식을 보고 답을 유추해가는 과정을 이해하는 느낌이랄까
나도 무슨말인지 모르겠지만 점점 java지식파편들이 선이 이어지는 느낌이다
-근데 여기에 스프링이 들어가니 자꾸 까먹는다 ㅠㅠ
- 이번주에 느낀점
-이번주는 망망대해에 버려진거같은 느낌이다
-스프링이라는 바다는 겁나 크고 험하다.....
-헤엄쳐서 오라고하는 목표지는 있는데 어떻게 가야될지 모르겠다.
Spring은 프레임워크다?
프레임:틀 / 워크: 동작하다
말그대로 틀 안에서 동작하다라는 뜻 ->즉 틀을 제공해줄테니 틀안에서 만들어라. 그럼 좋은 프로그램 만들수 있어라는뜻
Spring은 오픈소스이다?
Open Source는 공개되어있는 소스라는 뜻 -> 내부를 뜯어 고칠수있다!
Spring은 IoC컨테이너를 가진다?
이게바로 스프링의 핵심! IoC(Inversion of Controll) 즉 제어의 역전이란
주도권이 내가아닌 스프링에게 있다는것!
[Class = 설계도/ Object = 실체화가 가능한 것 / Instance = 실체화 된것]
가구를 예로들면 가구는 Abstract class, 의자는 object, 의자설계도는 class, 진짜로 만들어져서 내가 앉고있는 의자는 instance라고 할수있다
(의자 s = new 의자();를 하면 heap 메모리공간에 의자가 instance되서 뜨고 s는 의자를 가리킨다
여기서 heap 주소 s는 의자를 만든 메서드가 관리한다)
원래는 이렇게 instance를 만드는데
스프링에서는 바로 이 instance들 예로들었던 가구의 의자, 책상, 탁자, 서랍을 스프링이 미리 스캔해서 heap메모리공간에
instance를 만든다.
이게 제어의 역전 IoC이다...
어렵다..
정리되어있는 말을 보자면,
스프링 프레임워크의 근간
오브젝트의 생명주기와 의존 관계에 대한 프로그래밍 모델
유연하고 확장성이 뛰어난 코드를 만들수 있게 해주는 프로그래밍 모델 -by 토비의 스프링-
제일 마지막 줄에 있는 말을 살펴보자
유연하고 확장성이 뛰어나다
= 변경이 있을때 수정이 쉽다
=수정할 부분만 수정하면 된다
=관심사의 분리가 잘 이루어졌다
Spring은 DI(Dependency Injection)을 지원한다
DI는 의존성 주입, 즉 원래 예전에는 내가 new 객체를 만들어서 내가 관리했다면
스프링안에서는 스프링이 스캔을해서 ioc로 객체를 만들었기때문에
내가 원하는 모든 class에 method에서 스프링이 만든 객체를 사용할수 있게된다!
한마디로 heap메모리(스프링컨테이너)에 뜬 의자, 붕어빵, 사자, 기린 같은 객체들을 여러 클래스안에 메소드로 사용한다!
여기서 '의자'는 다른클래스에서 같은 '의자'를 사용한다-> 이것이 SingleTon!
내가 필요한 '의자'를 클래스에서 가져다서 쓰는게 바로 DI!
스프링 빈(bean)이란? 스프링(Spring) 컨테이너가 관리하는 자바 객체를 빈(Bean)이라 한다. 즉 '의자'라고 이해할수있다!
'항해99' 카테고리의 다른 글
22.8.10 TIL (0) | 2022.08.10 |
---|---|
[항해99] WIL.03 MVC, ORM, SQL에 대해 알아보자 (0) | 2022.08.07 |
항해99 WIL.2 객체지향 프로그래밍이란?(OOP) (0) | 2022.07.24 |
항해99 WIL.1 JWT와 API (0) | 2022.07.17 |
[항해99] 1주차 - 01. C반7조 미니프로젝트 S.A(Starting Assignment) (0) | 2022.07.13 |