- @GetMapping() (이)란?
- URL 데이터를 통해 요청이 들어오면 그에 맞는 데이터를 보여준다.
- URL에 데이터가 노출되어 보안에 취약하다.
- @ResponseBody (이)란?
- 클라이언트에서 서버로 요청 메세지가 오면 서버가 클라이언트로 부터 응답을 보낼때 사용된다.
- JPA 란? 무엇이고 왜 쓰는가?
- SQL쿼리를 작성하지 않고도 객체를 통해 DB를 조작할 수 있다.
- 가독성이 좋고, 유지보수가 쉽다.
- JPA 에서 엔티티 란?
- @Entity 가 붙은 자바의 클래스와 DB의 테이블 정보와 매핑되어 관리하기 쉽다.
- JPA 에서 레포지토리에 아무런 코드가 없어도 save 같은 메서드를 쓸 수 있는 이유?-
- Optional 객체란 ?
- 값이 없는 경우를 표현하기 위한 클래스
- NPE(NullPointException) 오류를 발생시키는 것을 방지하기 위한것으로 Optional 객체로 래핑 되어 반환되기에 보다 안전하다.
- 타임리프 설치 후 어떤 경로 폴더 안의 파일의 이름과 매칭이 되는지? (폴더이름)
- Model 객체란 무엇이고 왜 쓰는지
- model 객체를 파라미터로 선언해주면 스프링이 알아서 생성된 데이터를 view로 전달해준다
- 의존성 주입 방법 3가지와 권장하는 방법 1가지를 서술하세요.
- 생성자 주입 2. 필드 주입 3. 수정자 주입(Setter)
- 생성자 주입: 순환참조를 방지하고, final 선언으로 객체가 변하지 않는다.
- @RequiredArgsConstructor 란 무엇인지?
- final 키워드 객체 생성자를 자동 호출 해준다.
- 타임리프에서 반복문은 어떤 키워드로 쓰는지 예제 코드를 작성하세요
<tr th:each="question : ${questionList}">
<td th:text="${question.subject}"></td>
</tr>
- 서비스 레이어를 만드는 이유 ?
- 각 계층의 역할을 분명히 하여 코드 가독성을 높이고, 유지보수성을 향상시키게 된다.
- @RequestMapping() 을 쓰는 이유
- 중복되는 mapping 값을 최소화 하기 위해
- HTTP 에서 GET VS POST 요청의 차이, 메서드 맵핑 차이도 설명
- GET: 클라이언트가 서버로부터 정보를 요청할때 사용되고 캐시가 가능하다
그러나 URL 주소에 히스토리가 남고 정보가 노출된다.
- POST: 캐시되지 않고 URL에 남지 않기 때문에 보안에 좋다.
- form 태그 에서 데이터 이름을 식별하기 위한 요소는? @RequestParam 으로 받아야하는 이름의 기준
- @RequestParam 사용하면 HTTP 요청으로 들어온 값을 파라미터 이름으로 바인딩하여 그 값을 변수에 저장한다.
- 변수를 파라미터로 받고 뷰로 반환하기 까지의 로직이 간소화 된다.
- @PathVariable() 이란?
- 경로변수라는 뜻으로 {id} 안에 둘러 쌓인 값을 나타낸다.
ex) @GetMapping("question/list/{id}")
- URL 경로에서 변수 값을 추출하여 매개변수로 전해준다.
- @RequestParam 이란?
- URL에서 파라미터 값을 받을수 있는 어노테이션 이다.
- Form 객체를 쓰는 이유
- 전송하는 폼 데이터가 복잡해도 거기에 맞춘 별도의 폼 객체를 사용해서 데이터를 전달 받을 수 있다.
- 보통 등록과 수정용으로 별도의 폼 객체를 만들기 때문에 검증이 중복되지 않는다.