SpringBoot 개념정리(1) - 1. 스프링이란?

Jang Seowoo·2022년 8월 1일
3
post-thumbnail

인프런 스프링부트 개념정리(이론)
이 글은 다음 강의의 이론 정리 글 입니다.


스프링의 핵심은 무엇인가요?

1) 스프링은 Framework이다.

스프링이라는 틀안에서 동작한다. 스프링이 정해준대로 개발을 하면 된다.

틀에 맞춰서 개발을 해! 그럼 너도 나처럼 좋은 프로그램을 만들수 있어.

2) 스프링은 오픈소스이다.

무료다.
소스코드가 공개되어있다.

즉, 스프링 코드의 내부를 뜯어고칠 수 있다.

만약 진짜로 고친다면, 스프링에 contribute를 할 수 있다.(그렇다면 당신은 천재만재)

3) 스프링은 IoC(Inversion of Control) 컨테이너를 가진다.

스프링의 핵심, 제어의 역전

주도권이 스프링에 있다.

class가 설계도라면
object는 그 중에서 실체화가 가능한 것을 말하고,
instance는 실체화가 된 것을 의미한다.

예를 들어, 가구라는 abstract class가 있고 의자라는 class가 있을 때,
의자는 object가 되고, 이것이 실제 세상에 나타나면 instance가 되는 것이다.

object는 이런 식으로 쓸 수 있다.

 의자 chair = new 의자(); //개발자가 직접 new를 호출해서 heap에 올린다.

여기서 new는 object를 새로 만들어서 heap에 올리게 된다.

그렇다면 다음과 같은 경우에는 어떻게 될까?

 public void func1(){
 	의자 chair = new 의자();
 }

 public void func2(){
 	의자 chair = new 의자();
 }

func1에서 만들어진 chair와 func2에서 만들어진 chair는 서로 다른 주소값으로 heap에 등록된다. 따라서 한 메소드 안에서 만들어진 chair는 다른 메소드에서 쓰지 못하고, 다른 메소드에서 의자를 쓰려면 새로 new로 만들어야된다.

여기까지가 일반적인 java의 특징이었으면, Spring은 좀 다르다!

💡 Spring은?
object들을 미리 scan해서 직접 heap 메모리에 올려놓는다. 따라서, object의 주소를 개발자가 직접 관리하지 않고, spring이 관리해준다. 주도권이 spring에 있다는 뜻이다. 그렇게 되면 이미 heap에 올라가있는 object를 다양한 function에서 가져다가 쓸 수 있게 되는 것이다.

제가 만든게 아닌데 어떻게 주소를 찾아가죠? 는 나중에 해결해보자!

4) DI(Dependency Injection)

의존성 주입
내가 원하는 모든 class의 method에서 다 사용이 가능하다.
singletone object: 다 같은 의자다.

따라서, singletone object를 가져다 쓰는 것을 DI라고 한다.

profile
https://devseowoo.notion.site/Seowoo-Portfolio-b21365c3477345818913e8d8fe2e3b90

0개의 댓글

관련 채용 정보