1. 프레임워크와 라이브러리의 차이
- 프레임워크
- 앱/서버 등의 구동, 메모리 관리, 이벤트 루프 등의 공통된 부분은 프레임워크가 관리하며, 사용자는 프레임워크가 정해준 방식대로 클래서, 메서드들을 구현하면 되며 사용자는 원하는 기능 구현에 집중하여 개발할 수 있도록 필수적인 코드나 기능들을 위한 뼈대를 제공한다.
- 라이브러리
- 특정 기능들을 모아둔 코드
- 차이 점
- 라이브러리의 경우 사용자는 코드의 흐름을 직접제어 해야 하며 프레임워크는 애플리케이션의 코드가 프레임 워크의 제어를 받게 된다.
2. Bean LifeCycle
- 스프링 컨테이너 생성 -> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종료
- https://devlog-wjdrbs96.tistory.com/321
3. @request param/ @request body/@ModelAttribute의 차이
- @ModelAttribute
- 여러 파라미터를 매개변수에 바인딩해줄 수 있습니다.
- setter를 사용해 담아주기 때문에 해당 매개변수의 바인딩 받는 필드는 setter가 있어야 합니다.
- 타입 변환에 실패하더라도 작업은 계속됩니다. (WebExchangeBindException 발생
- @request body
- HttpMessageReader가 request body를 Java Object로 역직렬화 합니다.
- GET요청시 Setter 존재
- POST요청시 기본 생성자 존재해야 하며 Setter는 없어도 된다.
- @request param
- 1 : 1로 값을 바인딩
- 만약 1:1로 받는값이 메서드 매개변수의 생성자(1개의 인자만 받는)의 인자와 일치하면 객체를 바로 바인딩 해줍니다.
- 잘못된 파라미터값이 들어오면 400 BadRequest를 발생시킵니다.
- https://parkadd.tistory.com/70
4. 서블릿 (Servlet)
- 서블릿이란 Dynamic Web Page(인자에 따라 바뀌는 Page)를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술입니다.
- 웹을 만들때 발생하는 다양한 요청과 응답을 간단한 메서드 호출로 관리하게 해주는 기술
- https://coding-factory.tistory.com/742
5. 서블릿의 실행 과정
- Servlet Request, Servlet Response 객체를 생성합니다.
- 설정 파일을 참고하여 매핑할 Servlet을 확인합니다.
- 해당 서블릿 인스턴스 존재의 유무를 확인하여 없으면 init() 메소드를 호출하여 생성합니다.
- Servlet Container에 스레드를 생성하고 service를 실행합니다.
- 응답을 처리하였으면 distory() 메소드를 실행하여 Servlet Request, Servlet Response 객체를 소멸합니다.
- https://coding-factory.tistory.com/742
6. 자바의 특징
- 객체지향
- 기능들을 객체형태로 만들어 객체들을 결합해 하나의 프로젝트로 만드는 것
- 인터프리티 언어
- 텍스트 소스를 컴파일하여 클래스 파일로 만든뒤 런타임이 클래스 파일을 인터프리티 하면서 실행
- 독립적인 플랫폼
- 어떠한 운영체제라도 독립적으로 자바 언어 사용(JVM 사용)
- 자동 메모리 관리
- 개발자는 메모리 접근 불가 자바가 직접 관리
- 객체 생성시 자동적으로 메모리 영역을 찾아서 할당
- 멀티 쓰레딩 지원
- 하나의 프로그램 단위가 동일한 쓰레드 동시 수행 가능
- 동적
- 오류가 발생시 오류 클래스만 수정하면 되기에 전체 수정 필요가 없다.
- 안전하며 강력
- 모든 메모리 접근을 자바가 관리하기에 시스템 붕괴 우려가 없다.
- https://s-bug.tistory.com/57
7. 자바언어와 기존의 언어의 다른 특징
- 자바는 바이트 코드로 변환하기에 모든 플랫폼에서 실행이 가능하다.
8. 예외처리의 필요성과 목적
- 예외처리는 컴파일 에러 런타입에러 논리적에러가 있으며 프로그램 실행시에 의도한 바에 맞지 않게 코드가 작동하거나 비정상적인 종료를 막을 수 있다.