일단 씻고 나가자

23.10.26 본문

Study/닥치는 대로 주워 담기

23.10.26

일단 씻고 나가자 2023. 10. 27. 00:14

2023. 10. 26 목요일

 

- [Effective Java] Date의 문제점? 해결 방법?

: Date는 불변 객체가 아니기 때문에 (set으로 원본을 바꿀 수 있음) 문제가 생길 수 있다.

LocalDateTime 불변 객체를 사용하거나, 방어적 복사로 원본을 항상 보관해야 한다.

이는 Date뿐 아니라 다른 불변 객체가 아닌 객체를 사용할 때도 방어적 복사를 사용.

수정하지 않을 것이라면 상관없지만, 수정할 것이라면 방어적 복사.

 

 

- [Spring] controller란? 관련 어노테이션 설명?

Controller 외부의 요청을 처리.

스프링 MVC에는 어노테이션으로 활용.

 

예전엔 @Controller도 있었는데, 예전에 썼던 어노테이션.

예전엔 프론트-백의 경계가 희미했기에, HTML 템플릿을 내어주도록 했다. (model + view)

-> 바로 브라우저가 받아 해석.

이제는 프론트-백이 나누어져 백엔드는 데이터만 내려주도록 변했기 때문에,

@RestController를 통해 RestAPI 요청에 대한 응답 (주로 JSON)을 주도록 바뀜.

 

기본적인 것은 매핑 어노테이션 (RequestMapping)을 통해 이용.

(@RequestController(value = “/url”, method = RequestMethod.GET))

스프링 2.4 버전부터 축약형 매핑 어노테이션이 나와서, @GetMapping으로 더 가독성이 높아지도록 변경되었음.

 

PathVariable 방식은 url/로 들어오는 방식, RequestParam은 쿼리 형태로 들어오는 방식. 둘 다 변수 명과 파라미터의 이름을 동일하게 하면 어노테이션 인자를 생략하도 됨.

RequestParam의 경우 required, default 등으로 설정 가능. (꼭 필요한가 여부 및 기본값)

그리고 Map등의 형태로 여러 개를 받을 수도 있음.

 

Post, Put, Patch 등에서는 url에 개인정보가 뜰 수 있거나, 혹은 데이터의 양이 많아 url 길이를 초과할 수 있기 때문에 @RequestBody@RequestHeader를 이용한다.

RequestBody는 단순 String으로 받을 수도 있지만, 내용이 길어질 수 있기에 빈 객체를 이용하여 받을 수도 있다. (@Data)

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.10.31  (1) 2023.11.01
23.10.30  (1) 2023.10.31
23.10.25  (0) 2023.10.26
23.10.24  (0) 2023.10.25
23.10.23  (1) 2023.10.24