spring
-
Spring boot : sql dummy data 만들기Spring Boot 🍃 2023. 12. 5. 00:01
DB 테이블 조회 테스트를 위해서 insert 쿼리를 다량으로 만들어 테스트 실행시 만들어둔 insert 쿼리가 자동으로 실행되게 하는것에 대한 포스팅이다. 1. dummy insert data query 생성 mockaroo.com 사이트에서 더미 데이터를 제작해준다. 회원가입을 하지 않아도 되는 아주 편리한 사이트이다. 한가지 아쉬운 점은 한글 지원이 안됨 🫤 mockaroo 사이트 바로가기 사이트에 진입하면 아래와 같은 화면이 나타난다. Field Name에는 필드 (table 컬럼) 이름을 적어주고 Type 부분은 입력할 데이터를 선택해주는데, Type 클릭시 창이 나타난다. 이때 우측 상단의 돋보기 칸에 원하는 데이터 종류를 입력해주거나, 창의 하단 중앙부분에 영어로 상세 조건을 입력하면 AI가..
-
Spring boot: RestTemplate - Naver 지역 검색 api 연동해보기Spring Boot 🍃 2023. 12. 5. 00:01
1. 네이버 개발자센터에서 검색 api를 사용하기 위해 open api 이용신청을 하고 인증키를 받아둔다. 네이버 개발자 센터에서 제공되는 검색 api 문서를 참고하며 진행! 2. api키 숨기기 위에서 받은 네이버 api 인증키를 properties 파일이나 yaml 파일을 새로 만들어서 입력해준 후, // key.yaml naver: client-id: asdhlagfkjdshg secret: sdfjhakjdhfgukiyfdgiulz application.properties 파일에 아래 문장을 입력해 주면 자바 파일에서 사용할 수 있다. 그리고 위에서 만들어준 파일은 꼭 .gitignore에 입력해주어야 git에 업로드 되지 않는다. spring.config.import=classpath:api-k..
-
스프링 부트 핵심 가이드 4주차 : 8장책 공부/스프링 부트 핵심 가이드 2023. 12. 5. 00:01
📖 책 정보 나를 위한 모바일 가이드 8장. Spring Data JPA 활용 JPQL 쿼리 메서드 정렬과 페이징 처리 @Query QueryDSL JPA Auditing 8장 JPQL 쿼리 메서드 정렬과 페이징 처리 @Query QueryDSL JPA Auditing Spring Data JPA에서 제공하는 기능들에 대해 더 알아보고 다양한 활용법에 대해 살펴본다. 그 과정에서 리포지토리 예제를 작성하고 , 리포지토리의 활용법을 테스트 코드를 통해 학습 실습 프로젝트는 새로 생성하지 않고 지난번에 했던 프로젝트에서 진행! spring.io - Spring Data JPA Document 1. JPQL JPA Query Language JPA에서 사용할 수 있는 쿼리를 의미하며, SQL과 문법이 매우 비..
-
spring boot : RestTemplateSpring Boot 🍃 2023. 12. 5. 00:01
보고 배운 인강 Client 입장이 되는 서버와 Server 입장인 서버를 띄워서 RestTemplate를 이용하여 Client에서 Server로 데이터를 요청받는 구조에 대해 학습! RestTemplate 정보 제공: Chat GPT Spring Framework 에서 제공하는 HTTP 통신을 간편히 처리할 수 있는 클래스이다. RestTemplate은 클라이언트 측에서 HTTP 요청을 보내고, 응답을 받아오는 기능을 제공한다. URL , 요청 메서드 , 요청 헤더 , 요청 본문 등을 설정할 수 있다. 또한 응답 데이터를 다양한 방식으로 파싱하고 , 응답 상태 코드 , 헤더 등을 확인할 수 있다. Spring 5 버전부터는 RestTemplate 대신 WebClient를 사용하는 것을 권장하고 있다. ..
-
spring boot: 비동기 처리하기Spring Boot 🍃 2023. 12. 5. 00:01
보고 배운 인강 링크 웹 MVC에서는 많이 사용할 일이 없다고 하지만, 비동기에 대한 호기심을 풀어내기 위해 간단히 학습! 만약 DB를 사용할 때 비동기를 사용해야 한다면 NoSQL을 사용할 때는 Spring WebFlux 를 사용하는 것을 추천 RDB를 사용하게 된다면 여기서 사용하는 @Async 가 소용이 없다. 왜냐하면 트랜잭션 때문에 동기 방식으로 통신을 해야하기 때문에 전체적인 flow 자체가 비동기가 될 수 없다고 한다. 이러한 부분들은 spring 보다는 웹의 난이도, 아키텍처의 난이도가 올라갔을 때 경험해보게 될 수도 있는 부분이라고 강사님이 설명해주셨다. 이번 강의는 Spring WebFlux가 아닌, WebMvc에서도 이런식으로 코딩이 가능하다는 것을 체험해보기 위한 강의! 간단 실습 ..
-
spring boot: Slf4jSpring Boot 🍃 2023. 12. 5. 00:01
Lombok 사용시 @Slf4j 어노테이션을 사용할 수 있다. @Slf4j 로그를 출력해주는 어노테이션. Lombok Dependency를 추가해주어야 사용이 가능하다. Lombok Dependency 추가 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' 간단한 사용 예시와 함께 설명한다면 사용 예시 1. Class 파일에 @Slf4j 어노테이션 추가 @Slf4j public class FilterController { } 2. 메서드에서 호출! @Slf4j @RestController @RequestMapping("/filter") public class FilterController { @Post..
-
Spring Boot: Interceptor 인터셉터Spring Boot 🍃 2023. 12. 5. 00:01
보고 배운 인강 링크 1 보고 배운 인강 링크 2 인터셉터 스프링에서 제공하는 공통처리 기능 Filter와 매우 유사한 형태로 존재한다. Filter와 차이점은 Filter는 Web Application에 등록되고 Interceptor는 Spring Context에 등록 된다는 점이다. 실제 매핑된 Handler 정보 확인 가능 조금 더 상세한 조건식과, 세부적인 스펙(pre, post, after)을 통해 구체적인 시점에 구체적인 동작이 가능하다. AOP와 유사한 기능을 제공할 수 있으며, AOP와 비교한다면 AOP는 인터셉터보다 더 구체적인 조건( 어노테이션, 파라미터, 주소 등 )과 동작 위치(After Throwing 등)을 갖는다. logging을 하는데에 사용되기도 하지만 , 주로 인증 단계를..
-
Spring Boot: FilterSpring Boot 🍃 2023. 12. 4. 00:01
보고 배운 인강 링크 Filter 필터 Web Application에서 관리되는 영역 Spring Boot Framework에서 Client로 부터 오는 요청/응답에 대해 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청/응답 정보를 변경하거나, Spring에 의해서 데이터가 변환되기 전의 순수한 Client의 요청/응답 값을 확인 할 수 있다. 유일하게 ServletRequest , ServletResponse의 객체를 변환할 수 있다. 주로 요청/응답의 Logging 용도로 활용하거나, 드물게 인증과 관련된 로직들을 해당 필터에서 처리한다. 이를 선/후 처리 함으로써 Service business logic과 분리시킨다. 실습1 : 모든 경로 요청값 logging Filter 클래스 생성 후 ja..
-
Spring Boot: Exception 처리Spring Boot 🍃 2023. 12. 4. 00:01
보고 배운 인강 1 링크 보고 배운 인강 2 링크 예외란? Exception ? 프로그램이 예상치 못한 상황을 만났을 때 오류를 발생시키는 것 스프링 MVC에서 예외를 처리하는 방법 REST API : RestControllerAdvice ViewResolver : ControllerAdvice @RestControllerAdvice 어플리케이션의 전역적 예외 처리 REST API용으로 객체를 응답하는 방식 (주로 JSON) 옵션 값 지정으로 특정 패키지 혹은 특정 클래스에서 발생하는 예외만 처리하는 파일을 만들수도 있다. 1. 특정 패키지에서 발생하는 예외만 처리 @RestControllerAdvice(basePackages = "com.example.dice.controller") 2. 특정 클래스에..
-