@Transactional
: DB 정보를 업데이트 해줘야 한다고 알려주는 어노테이션.
: service 메소드에 쓰임.
@RequestBody
: 어플리케이션 JSON을 통해서 전달되는 그 정보가 여기 안에 쏙 알아서 삽입된다.
🔖 라이브러리 사용
🔖 JSONArray
: JSONObject 에서 items 배열 꺼낼 때 활용.
🔖 리스트 생성하기
List<ItemDto> itemDtoList = new ArrayList<>();
🔖 JSONObject
JSONObject rjson = new JSONObject(result);
// System.out.println(rjson);
JSONArray items = rjson.getJSONArray("items"); // rjson 에서 JSONArray를 꺼내겠다는 뜻. JSON으로 이루어진 배열을.(items가 []리스트형태로 되어있음)
// 키 값은 items라고 적혀있으니 items라 적는것.
// 변수명(items)의 형태는 JSONArray임.
🔖 컴포넌트
개발자가 스프링에게 권한을 주는 것.
: ex) 컨트롤러, 서비스, entity 이런 것들 다 컴포넌트로 등록이 되어있다. 자동으로 되어있음
: 지금 만든 NaverShopSearch는 수동으로 해줘야함.
그냥 클래스 윗줄에 @Component 라고 해주면 됨.
그럼 서비스나 컨트롤러처럼 스프링이 마음대로 권한을 획득한 것.
🔖 @RequestParam
/api/search?query=검색어
@GetMapping("/api/search")
public List<ItemDto> search(@RequestParam String query){
}
절대로 사용자가 입력한 결과가 그대로 들어가지 않는다. 스프링은 되게 엄격해서 물음표 뒤에 오는 것을 저렇게 변수로 받고싶다면 반드시 추가적인 장치를 해줘야한다. 그게 @RequestParam. request Parameter. 물음표 뒤에 있는 것을 파라미터라고 함. 그래서 요청할 때 파라미터 중에 query라는 애가 있으면 그 녀석을 여기에 넣어줘라 라는 어노테이션.
변수명을 똑같이 넣어줘야함. 여기서는 query.