230424 레벨 인터뷰 스터디를 위해 작성한 레벨 로그
Spring
Spring Core
- IoC (제어의 역전) : 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것
- DI (의존관계 주입) : 의존관계를 외부에서 결정(주입)해주는 것
- 스프링 컨테이너 : 스프링에서 자바 객체(스프링 빈)들을 관리하는 공간
- 스프링 컨테이너에 스프링 빈을 등록하는 법
- @ComponentScan - @Component을 이용한 자동 등록
- @Configuration - @Bean 을 이용한 수동 등록
Spring JDBC
- Jdbc : 자바 프로그램이 DB와 연결되어 데이터를 주고 받을 수 있게 해주는 인터페이스
- connection
- statement
- resultSet
- JdbcTemplate : jdbc를 편리하게 사용하기 위한 기술
- 기존 jdbc의 반복 작업을 대신 처리
- RowMapper : resultSet에서 값을 추출하여 원하는 객체로 타입을 변환
- NamedParameterJdbcTemplate : sql 쿼리 속 파라미터에 ?대신 이름을 붙여서 지정할 수 있다
- SimpleJdbcInsert : 직접 insert 쿼리를 쓰지 않고도 db에 데이터를 저장할 수 있다
- Connection pool : connection을 미리 생성해두고 사용
- DataSource : connection을 획득하는 방법을 추상화
Spring MVC
- @RestController = @Controller + @ResponseBody
- 요청을 메서드에 연결하는 방법
- @RequestMapping : controller에 request를 매핑 (@GetMapping, @PostMapping 이런식으로 Http메소드를 축약한 매핑도 가능하다)
- @PathVariable : URL에 들어간 변수(식별자)를 조회
- 요청 데이터를 읽는 방법
- 요청 파라미터 조회 : @RequestParam, @ModelAttribute
- HTTP 메서드 바디 조회 : RequestEntity, @RequestBody
- 응답 데이터를 만드는 방법
- 정적 리소스 : 해당 파일을 변경 없이 그대로 서비스 하는 것
src/main/resources/static
이 경로에 리소스를 넣어두면된다
- 뷰 템플릿 : 사용자가 요청하는 정보에 따라 서버에서 다양한 처리를 하여 보여주는 동적인 페이지
src/main/resources/templates
이 경로에 뷰 템플릿을 넣어두면된다
- @ResponseBody가 없으면 뷰를 찾고, 해당 뷰를 렌더링 한다
- 직접 HTTP 응답 : HTML이 아니라 데이터를 전달
- ResponseEntity : HTTP 메시지 + HTTP 응답 코드
- @ResponseBody : HTTP 메시지 (HTTP응답 코드를 사용하고 싶다면 @ResponseStatus 추가 사용)
- API 예외처리
- @ExceptionHandler : controller에서 발생하는 에러를 잡아서 메서드로 처리해주는 기능
- @ControllerAdvice : controller에서 발생한 예외를 한 곳에서 관리하고 처리할 수 있게 도와주는 기능