즉, 틀에서 동작한다는 의미이다
즉, 소스를 원하는대로 바꿀 수 있다
제어의 역전으로 주도권이 스프링이다
스프링이 Object들을 읽어서 heap(메모리)에 올린다
의존성 주입
스프링이 관리하는 객체를 원하는 모든 클래스의 메소드에서 사용할 수 있다
그 객체는 싱글톤으로 하나의 객체를 공유할 수 있다
필터는 문지기로 권한에 대한 임무를 가질 수 있다
tomcat의 필터는 web.xml이고 스프링 컨테이너의 필터는 인터셉터(AOP)이다
어노테이션이란 주석+힌트로 컴파일러가 무시하지 않는다
리플렉션이란 분석하는 기법으로 런타임때 일어난다
스프링에서는 어노테이션으로 객체를 생성한다
@Component //클래스를 메모리에 로딩, IoC
@Autowired //로딩된 객체를 해당 변수에 집어 넣어, DI
중간 데이터란 JSON으로 모든 데이터가 이해하기 쉬운 데이터이다
Class Animal {
int num = 10;
String name = "사자";
}
-> {"num": 10, "name": "사자"}
MessageConverter이란 어떤 객체/프로그래밍 언어를 JSON으로 바꾸거나 반대로 바꿔줌
영어 한 문자는 8bit, 256가지의 문자를 전송할 수 있다
-> 8bit씩 끊어 일으면 한 문자씩 받을 수 있을 거야
-> 8bit = 1byte : 통신 단위
즉, 1byte는 하나의 문자이다
유니코드: UTF-8, 3byte 통신
BufferedReader(request.getReader() //JPA)로 데이터를 받으면 가변길이의 문자를 받아서 통신함
BufferedWriter는 Printwriter을 자주 사용하여 문자열을 가변길이로 쓴다
@RequestBody //BufferReader
@ResponseBody //BufferWriter
Persistence는 영속성으로 데이터가 영구적으로 기록되게 해주는 것
하드디스크 안에 DBMS에 비휘발성으로 기록한다
API란 애플리케이션(A) 프로그래밍(P) 인터페이스(I)
Object Relational Mapping으로 객체를 데이터베이스에 연결하는 방법론이다
모델링이란 추상적인 것을 현실로 뽑아내는 것이다
-> 클래스를 통해 데이터베이스를 만들어내는것
Select, Delete, Update, Insert을 자주 사용한다
<반복적인 작업>
1. 자바는 DB에 connection 요청
2. DB는 session을 만듬
3. 자바는 Connection을 가짐
4. 자바는 쿼리 전송
5. DB는 데이터를 돌려주는데, 자바 Object로 변경해야한다
-> JPA는 함수 하나로 단순하게 처리한다
컨텍스트(context)란 그 대상에 대한 모든 정보이다
영속성 컨텍스트와 DB는 동기화되어 내용이 변경이 되면 자동으로 update를 한다
자바에는 객체를 넣고 DB는 JPA가 자동으로 처리한다
Class Car {
String name;
String color;
Engine engine;
}
Class Engine {
int id;
int power;
}
JPA는 오라클, 마리아, MYSQL, MSSQL등을 지원하기 때문에 어떤 DB기술을 사용해도 추상화 객체를 통해 DB에 접근가능하다
socket: 운영체제가 가지고 있는 것, 연결이 지속됨
다수의 연결을 하기 위해서는? -> 스레드, timeslice
http(문서(static 자원) 전달이 목적) 통신 - Stateless 방식
--> 단점을 보안한 것이 웹 서버
웹 서버(아파치) + 톰켓의 형태
톰켓을 따로 설치할 필요 없이 바로 실행가능하다

but 스프링부트는 URI로 식별자로 접근하여 특별한 파일을 요청할 수 없고 request시에는 무조건 자바를 거친다
http://naver.com/a.png //URL
http://naver.com/picture/a //URI
서블릿 컨테이너란 톰켓으로 자바코드로 웹을 할 수 있는 것을 모아 컨테이너를 만듬
1. 스레드(동시에 요청 많음) 생성
2. 서블릿 객체 생성
서블릿 객체는 stateless가 아닌 재사용하여 속도가 빠름
한 번 설정하면 어디서든지 사용할 수 있음
인증이 된 것 : Session
목적지를 알려줌
들고올 데이터의 Type, Type이 맞지 않으면 error
그냥 들어온 파일이 갈곳을 정의
이상한 파일은 error로 보내
리스너는 web.xml의 대리인의 역할
필터를 통해 알맞지 않으면 거부함
보호하는것
web.xml은 너무 많은 일을 하기 때문에 최초의 앞단에서 특정 주소를 FrontController에게 넘김 -> 내부의 자원에 접근 (request)으로 새롭게 new됨 -> RequestDispatcher을 통해 request와 response를 그대로 유지시켜줌으로써 페이지간 데이터 이동 가능
FrontController 패턴이나 RequestDispatcher를 직접 구현할 필요가 없다. 왜냐하면 스프링에는 DispatchServlet이 있기 때문!
DispatchServlet은 주소 분배를 함
DispatchServlet = FrontController + RequestDispatcher
DispatcherServlet에 의해 생성된 객체들
컴포넌트 스캔을 통해 src 폴더 안의 모든 자바파일을 스캔하여 수 많은 객체(IoC)들을 생성하고 ApplicationContext에 등록된다@Controller
@RestController
@Configration
@Repository
@Service
@Component
미리 띄우는 것이 아니라, 필요할 때 getBean()을 통해 메모리에 로드 가능
Get요청 -> 적절한 컨트롤러의 함수를 찾아서 실행
WEB-INF/view/hello.jsp
{"id" : 1, "name":"홍길동"}