본문 바로가기
springboot 수업일지

2일차(3) 스프링프레임워크 개념

by wannabe 2021. 6. 24.

JSON은 공용어이다!

★JSON 정리해두기!!!

▶private를 사용하는 이유???

답> 마법 부리지(상태를 바로 바꾸는거) 말고 상태를 행위를 통해서 바꾸게 하기 위함!

다른 클래스에서 private으로 선언된 데이터 접근이 불가능하므로 getter,setter함수로 접근한다.

<보충 개념>

프로그램에서 object는 메모리에 올릴수 있는 것을 말한다.

object 정확한 의미는? 객체인데,,메모리에 올라올수 있는 가능성 있는것은 모두 객체이다.

동물은 추상 클래스

사자는 object(객체)

object가 메모리에 떴으면?? instance(인스턴스)이다!!

객체는 상태와 행위를 가지고 있다.

*object지향 프로그램에서 private로 설정해두고 함수(행위)로 호출하여 상태를 바꾸는 것!!

클라이언트는 이런 과정 몰라도 되고 버튼을 누름으로써 행위 실행하게 함...이 버튼은 인터페이스이다!

자동차에서 엑셀을 누르면 차가 앞으로 나아간다. 이에 대한 구체적인 과정은 복잡하지만 엑셀 밟는다!라는 인터페이스를 제공해준다.

다시 이전 진도로 돌아가서..

▶반환타입을 오브젝트로 바꾼다

▷ Send 결과는? JSON으로 출력됨

*스프링 프레임워크

-규칙을 배우는 것

IOC컨테이너(inversion of controll-제어 역전): 객체들을 관리

A

B

C

위 클래스를 만들어 run하면??

위에 클래스 3개를 reflection한다. 즉 스캔한다.

@RestController.... 등의 annotation을 스캔한다. B,C클래스에 @R이 있으면?

IOC컨테이너에 B,C클래스를 넣어둠. 이유는? 딱 하나만 띄워라는 것.

그리고 필요할 때 꺼내쓴다. 이거를 DI라고 한다. Dependency Injection(의존성 주입)

A

B (@R)

C (@R)

T (@R)

스캔해서 annotation확인해서 IOC에 등록한다.

그리고 DI로 꺼내서 사용한다.

톰캣서버에 스프링이 들어있다. localhost:8000으로 들어온다. 그리고 그 뒤에 주소가 필요함.

스프링 첫단에 디스패쳐가있다(front controller). 요쳥이 들어오면(/test1이 들어오면), 디스패쳐가 등록된 클래스에 다 들어가서 /test1이 들어있는 것들을 다 낚아챈다.

확인해보니, T클래스 안에 ("/test1)이 있는 함수가 있어서 그걸 띄운다.

데이터를 받을때, Spring은 자바로 바꿔준다. 다시 돌려줄때 JSON 으로 응답한다.