데모 밑에 있는 모든 클래스를 스캔 > 어노테이선 붙은 애들을 찾아서 전부 new해서 자기가 만든 자료형(ioc 컨테이너)에 담김 → 레퍼런스 주소를 잃을 일이 없음 - 가비지 컬렌션이 일어날 수 없음
싱클톤 하나만 뉴 할 수 있음
인버전 오브 컨트롤러 : 제어의 역전 → 개발자가 코드의 흐름을 직접 제어하는 것이 아니라, 외부 컨테이너가 제어의 주도권을 갖는 것을 의미합니다.
개발자가 아니라 스프링이 뉴를 해서 제어권을 빼앗김
왜?
어떤 어노테이션으로 ioc를 관리할 수 있는지?
스프링에 어노테이션이 많음, 스프링은 어노테이션을 공부하는 것
@RestController : 어노테이선 붙은 애들을 찾아서 전부 new해서 자기가 만든 자료형(ioc 컨테이너)에 담김
`HelloControlle가 new 되서 찾을 수 있음, 다른 패키지는 뜨지 않음 메서드의 이름으로 때리지 않아서 중요하지 않음-> 어노테이션으로 실행하니까
package com.example.demo.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { public HelloController(){ System.out.println("HelloController 컴포넌트 스캔됨"); } @GetMapping("home") public void home() { //HelloControlle가 new 되서 찾을 수 있음, 다른 패키지는 뜨지 않음 System.out.println("home 호출됨"); } }
그림추가하기
톰켓??
컨트롤러 : ?하고 파싱, dao 찾아주는애
html 코드에 데이터 베이스의 내용을 섞을 수 있음
package com.example.demo_.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { public HelloController(){ System.out.println("HelloController 컴포넌트 스캔됨"); } @GetMapping("home") public void home() { //HelloControlle가 new 되서 찾을 수 있음, 다른 패키지는 뜨지 않음 System.out.println("home 호출됨"); } @GetMapping("/hello") public String hello(){ String name = "홍길동"; return "<h1>hello "+name+"</h1>"; } }
정적 페이지 : 항상 동일한 페이지
동적 페이지 : 실행할때마다 변경함
http 헤더에 넣어줌 : 캐싱해서 쓰라고 알려줌
클라이언트(브라우저)가 읽어서 아 정적이라는 거구나 해서
요청한 hello를 다운받아서 랜더링해서 화면에 예쁘게 그리고
http의 헤더와 바디에서 바디로 받은 데이터가
<h1>random "+num+"</h1>
context 타입(마임 타입)에 캐싱하라고 적혀있음
브라우저가 받아서 다운로드 받아도 됨
버퍼드 리더로 읽었다는 것은 캐싱했다는 것
사람이 아니기에 정확한 프로토콜의 키 값으로 요청해야 알 수 있음
그래서 전세계 표준이 필요하고 그것이 http프로토콜
html에 전송하는 프로토콜이 rfc문서로 정해져 있고 정확한 키값이 정해져있어
브라우저가 그것을 보고 캐싱함
정적 페이지) 캐생해서 써
헬로우를 실행시키기 전에 캐싱했던 데이턴데 하면서 자기만의 스토어 메모리 공간으로 가서 통신을 안함
그래서 서버의 속도가 빨라짐
동적 페이지) 비어놓으면 됨
예시) 앱 : 내가 만듦
서버쪽으로 버퍼로 요청함
서버가 정적 데이터, 페이지를 응답함
http 프로토콜에 맞춰서 정확하게 적혀있는 것을 받음
해드폰 개발자는 그것을 모르기에 적용 못 함
앱 개발자는 http 프로토콜을 알아야 함
?
서버가 프로토콜에 맞춰서 클라이언트한테 알려줌
네이버가 동적 페이지로 만든 이유
- 정적 페이지면 내용이 바뀌면 다른 페이지를 만들어 페이지, 파일이 늘어나야 함
- 동적 페이지면 내용이 바뀌어도 적용할 수 있음
Share article