Spring Boot (18) 썸네일형 리스트형 @JsonProperty - API 호출/응답시 Json Key 값 매핑 24.06.20 회사에서 NICE 연동할 때 API 테스트 도중 Spring RestClient 로 API 호출 후 응답 값을 확인하는데 대문자로 이루어진 DTO 에서 null 값으로 들어오는게 확인됐다. 원래 첫글자 다음글자가 대문자일 경우 lombok에서 @Data 할때 getter, setter 필드명이 문제가 생긴다.그래서 별도로 getter, setter 만들었는데도 불구하고 null 계속 응답받았다. @Data@Builder@NoArgsConstructor@AllArgsConstructorpublic class ResponseDataHeaderDTO { @JsonProperty("CNTY_CD") private String CNTY_CD; // 국가코드 @Json.. spring actuator spring actuatorSpring Boot 에서 설정 관련 파일을 수정할 때 마다 Boot를 재시작 해야지만 반영이 되는데 실제 서비스를 한다고 가정했을 때 이런 재시작 작업은 사용자 경험에 치명적일 수 있다. spring actuator를 활용하면 Boot 재시작 안하고도 api 호출로 설정을 반영할 수 있다. 환경자바17 / Spring Boot 3.2.5 / Gradle 8.7 spring actuator 적용하기1. dependency 추가해준다.implementation 'org.springframework.boot:spring-boot-starter-actuator' 2. yml 또는 properties 설정 파일에 설정해준다. 2-1. 참고로 내 환경은 yml 이고 파일명이 bootst.. Spring Boot 3.2 버전 java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 오류 SpringBoot 3.2 버전 이상부터는 매개변수를 명시 해주지 않으면 오류가 발생할 수 있다.java.lang.IllegalArgumentException: Name for argument of type [java.lang.String] not specified, and parameter name information not available via reflection. Ensure that the compiler uses the '-parameters' flag. 오류 해결방안으로는 매개변수를 받을 때 value 값을 명시해준다.//pathVariable로 매개변수를 받을 때 value 값을 명시해줘야 한다.@RequestMapping(value="/add/{itemType}", method=Re.. Spring Security 줄 생김 (버전 업그레이드로 인해 없어질 메소드) JWT, Spring Security 강의 듣던 도중 버전 차이로 인해 줄 생김 문제가 발생했다. 인프런 강의를 본 사람들은 공감할거다. 저게 권장 되지 않는 방법이라면 대체 메소드를 보통 api 문서에서 제공해준다. api문서 보는 눈좀 기를겸 줄을 없애보기로 했다. 1. https://spring.io/projects/spring-security/#learn Spring 공식 API 사이트로 들어간다. 2. Api Doc로 들어가서 HttpSecurity 를 입력한다. 왜냐면 http. ~ 이게 HttpSecurity 타입이니깐 3. 안되는 메소드 들을 찾아준다. 4. 친절하게 제거될 예정이라고 나와있다. 5. 들어가서 봐보면 대체 메소드를 알려준다. 6. 그럼 대체 메소드로 타고 들어간다. 대체 메.. 날짜 표시하기(오늘기준 몇 분, 시간, 일, 달, 시간 전) Period - Year, Month, Day Duration - seconds, nano seconds @Data public class Board { private Integer id; private String title; private String content; private String writer; private String nickname; private Integer countComment; private Integer countLike; private LocalDateTime inserted; public String getAgo(){ // 현재 시간 LocalDateTime now = LocalDateTime.now(); if (inserted.isBefore(now.minusYear.. @SessionAttribute - 세션에 저장된 정보를 가져올 수 있다. 로그인할 때 세션에 저장시킨 정보를 스프링의 @SessionAttribute으로 가져올 수 있다. @SessionAttribute(value = "세션에서 가져올 Attribute 값", required = false) // required = false로 하면 가져올 세션 Attribute가 없어도 해당 메소드가 실행될 수 있게 한다. // required= true이면 무조건 값이 있어야 한다. 예시) 로그인 후 글 작성 하면 작성자 정보가 세션에 저장되어 있는 정보를 바탕으로 글 저장시 같이 저장됨 // 로그인해서 세션에 로그인정보 넣어주기 @Controller @PostMapping("/login") public ResponseEntity login(@RequestBody Member member.. ResponseEntity - 응답코드, 응답본문, 응답헤더 작성 가능한 객체 request(요청) 온 경우 reponse(응답)할 때 직접적으로 사용자가 수동으로 하나씩 컨트롤할 수 있음 보통 비동기 통신(ajax) 요청, 응답할 때 자주 사용함 ResponseEntity 는 응답코드, 응답본문, 응답헤더를 담아 보낼 수 있으며 순차적으로 알아보자 1. 응답코드(Http status code) 보내기 여러 Http 상태코드를 보내 직접적으로 컨트롤이 가능하다 예시) @GetMapping("user") @ResponseBody // ResponseEntity 타입이 있으면 @ResponseBody는 딱히 안써도 된다. spring이 알아서 해줌 public ResponseEntity method1(){ // ResponseEntity // : 응답코드, 응답본문, 응답헤더 작성 가.. 파일 첨부(전송, 받기) 클라이언트 파일 -> 서버로 전송 (파일첨부) 1. HTML 파일 전송 form 작성 2. 컨트롤러에서 받을 때 타입은 MultipartFile 타입으로 받는다. 3. 저장할 경로,파일관리에 용이하게 저장시킬 파일명 형식(오늘날짜_파일명)을 지정 4. InputStream, FileOutputStream 으로 클라이언트가 보낸 파일을 읽고 서버에 저장시킨다. 예시) @PostMapping("경로") public void method4(MultipartFile upload) throws Exception{ // 파일명 얻기 String fileName = upload.getOriginalFilename(); // 경로 설정 String path = "C:\\Temp\\CodeStudy\\" + "23102.. 이전 1 2 3 다음