Spring Boot 🍃
-
spring boot: 비동기 처리하기Spring Boot 🍃 2023. 12. 5. 00:01
보고 배운 인강 링크 웹 MVC에서는 많이 사용할 일이 없다고 하지만, 비동기에 대한 호기심을 풀어내기 위해 간단히 학습! 만약 DB를 사용할 때 비동기를 사용해야 한다면 NoSQL을 사용할 때는 Spring WebFlux 를 사용하는 것을 추천 RDB를 사용하게 된다면 여기서 사용하는 @Async 가 소용이 없다. 왜냐하면 트랜잭션 때문에 동기 방식으로 통신을 해야하기 때문에 전체적인 flow 자체가 비동기가 될 수 없다고 한다. 이러한 부분들은 spring 보다는 웹의 난이도, 아키텍처의 난이도가 올라갔을 때 경험해보게 될 수도 있는 부분이라고 강사님이 설명해주셨다. 이번 강의는 Spring WebFlux가 아닌, WebMvc에서도 이런식으로 코딩이 가능하다는 것을 체험해보기 위한 강의! 간단 실습 ..
-
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: 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: 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. 특정 클래스에..
-
-
Spring Boot: 유효성 검증 ValidationSpring Boot 🍃 2023. 12. 4. 00:01
보고 배운 사이트 : mangkyu.tistory + ChatGPT + 인강 검증 어노테이션 객체의 유효성을 검증하기 위해 사용되는 어노테이션이다. 이것들은 주로 클래스의 필드나, 메서드 매개변수에 적용하여 데이터의 유효성을 정의하고 검사한다. 다양한 검증 어노테이션들이 있으며, 몇 가지 대표적인 어노테이션들을 살펴본다. @NotNull null 불가를 의미 @NotEmpty null , "" 불가를 의미 @NotBlank null , "" , " " 불가를 의미 @Size int Type 불가 문자 길이 측정 @Size(min = 6, max = 6) @Past 과거 날짜 @PastOrPresent 오늘이거나 과거 날짜 @Future 미래 날짜 @FutureOrPresent 오늘이거나 미래 날짜 @As..
-
Spring boot: PageableSpring Boot 🍃 2023. 12. 4. 00:01
내용 제공 : Chat GPT Chat GPT와 함께 하는 Pageable 공부 ! 이해가 좀 되면 더 깊이 공부해 볼 사이트 : tecoble.techcourse Pageable 일반적으로 JPA와 함께 사용한다. 페이징 처리를 간편하게 하기 위해 제공되는 인터페이스로, Spring Data JPA 에서 지원한다. Spring Data JPA의 PagingAndSortingRepository 또는 JpaRepository 인터페이스의 메서드 파라미터로 전달될 수 있다. pageable 인터페이스의 구현체는 PageRequest , AbstractPageRequest 가 있다. Spring Data JPA JPA를 좀 더 간편하게 사용할 수 있도록 기능을 확장하고, 보다 쉬운 개발을 지원. PageReq..
-
스크래핑 ScrapingSpring Boot 🍃 2023. 12. 4. 00:01
스크래핑은 웹사이트의 정보 데이터를 긁어오는 행위를 말한다. 스크래핑을 잘못하게 될 경우 소송 걸릴 수 있으니 주의 /robots.txt 스크래핑을 하려는 사이트에서 가져가길 원하지 않는 데이터의 접근 uri를 명시해둔 파일이다. 해당 파일에서 Disallow 라고 적혀있는 주소에만 접근하지 않으면 된다. robots.txt 찾는 방법 : url/robots.txt ex : https://finance.yahoo.com/robots.txt ex : https://finance.naver.com/robots.txt Jsoup을 이용한 스크래핑 예시 String url = "https://search.naver.com/search.naver?where=view&sm=tab_jum&query=%EC%8A%A4..
-
Spring Boot MariaDB 연결Spring Boot 🍃 2023. 12. 3. 00:01
보고 배운 블로그 : @sheltonwon 0. MariaDB에 접속할 DB 준비 테스트용으로 생성 ) create database test; 1. dependency 추가 dependencies { runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' } 2. yml 에 설정 추가 spring: datasource: driver-class-name: org.mariadb.jdbc.Driver url: jdbc:mariadb://url:포트번호/db이름 username: 아이디 password: 비밀번호 3. 빠른 db 접속 확인을 위한 jpa dependency 추가 dependencies { implementation 'org.springframework.boot..