728x90 Spring Boot14 Spring Boot - Exception 구현 예제2 Exception 객체에서 getBindingResult() 메소드를 사용해서 BindingResult 데이터를 추출해서 에러 객체(ErrorResponse)를 만들어 준 점이 유용하다고 생각하여 기록용으로 글을 남깁니다. 에러가 복수건 이거나 에러 필드가 여러개 일 때 BindingResult를 이용해서 복수 에러 처리를 하면 될 것 같습니다. @ControllerAdvice @ResponseBody @Slf4j public class GlobalExceptionAdvice { @ExceptionHandler(Exception.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) protected ErrorResponse handleInternalServ.. 2021. 11. 29. Spring Boot - 정적 파일 경로 지정 스프링 부트로 어플리션 개발 중에 자바스크립트 로드 및 이미지 찾기 도중 ERR_ABORTED 404 에러가 발생할 때, 해결하는 방법으로 이와 같은 방법을 공유합니다. 스프링 부트 js, css와 같은 정적 파일 경로를 추가해주어야 인식 가능합니다. 기본으로 경로가 잡혀있긴합니다만, resources와 static 까지만 잡혀있습니다. 저는 static 아래 js, css, img 디렉토리를 추가하여 사용했기때문에 html에서 경로의 파일을 찾지 못하는 에러가 발생했습니다. package com.example.stockcrawling.config; import org.springframework.context.annotation.Configuration; import org.springframework.. 2021. 11. 5. Spring Boot - Swagger Swagger 란 Swagger 란 개발한 REST API를 편리하게 문서화해주고, 이를 통해서 관리 및 제 3의 사용자가 편리하게 API를 호출해보고 테스트할 수 있는 프로젝트이다. Spring Boot에서는 간단하게 springfox-boot-starter를 gradle dependencies에 추가함으로 사용할 수 있다. 다만, 주의할 점은 운영환경과 같은 외부에 노출되면 안되는 곳에는 사용할 땐 주의해야한다. Swagger Annotation Swagger 라이브러리 적용 maven repository에 접속해서 springfox를 검색하여 swagger 관련 라이브러리를 찾을 수 있습니다. https://mvnrepository.com/ 예전에는 SpringFox Swagger2, SpringF.. 2021. 10. 1. Spring Boot - 서버 간 통신 예제 예제 RestTemplate - getForEntity 서버 간의 통신을 위한 client 서버를 우선 만듭니다. client 서버를 통해서 다른 서버와 http 통신을 하여 response를 받아옵니다. package com.example.client.controller; import com.example.client.dto.Req; import com.example.client.dto.UserResponse; import com.example.client.service.RestTemplateService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation... 2021. 9. 26. Spring Boot - 서버 간 통신 RestTemplate 정의 Spring Boot - 서버 간 통신 파트는 RestTemplate 라이브러리의 개념편과 예제편으로 따로 정리하여 포스트할 예정입니다. 바로 RestTemplate 라이브러리 개념부터 가겠습니다. RestTemplate이란 spring 3.0 부터 지원한다. 스프링에서 제공하는 http 통신에 유용하게 쓸 수 있는 템플릿이며, HTTP 서버와의 통신을 단순화하고 RESTful 원칙을 지킨다. jdbcTemplate 처럼 RestTemplate 도 기계적이고 반복적인 코드들을 깔끔하게 정리해준다 특징 기계적이고 반복적인 코드를 최대한 줄여줌 RESTful형식에 맞춤 json, xml 를 쉽게 응답받음 출처: https://sjh836.tistory.com/141 [빨간색코딩] RestTemplate 의 .. 2021. 9. 25. Spring Boot - Interceptor Interceptor Interceptor란 fIlter와 매우 유사한 형태로 존재 하지만, 차이점은 Spring Context에 등록 됩니다. AOP와 유사한 기능을 제공할 수 있으며, 주로 인증 단계를 처리하거나 Logging를 하는데 사용합니다. 이를 선/후 처리함으로써, Service business logic과 분리 시킵니다. Client에서 요청을 하면 다음과 같은 순서로 실행됩니다. Filter -> Interceptor -> AOP -> Controller Interceptor 예제 - 어노테이션으로 권한 체크 @RestController @RequestMapping("/api/private") @Auth @Slf4j public class PrivateController { @GetMap.. 2021. 9. 23. Spring Boot - Exception 구현 예제 Valid 라이브러리를 이용하여 예외처리(Exception)를 하는 예제를 살펴보겠습니다. 저번 포스트에 다루었던 Exception을 좀 더 확장하여 예제 중심으로 보겠습니다. 이번 예제에서는 lombok을 사용합니다. 해당 의존성을 추가해서 사용하시면됩니다. compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' package com.example.exception.dto; import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.Min; import javax.validation.constraints.N.. 2021. 9. 13. Spring Boot - Filter Filter Filter란 Web Application에서 관리되는 영역으로써 Srping Boot Framework에서 Client로부터 오는 요청/응답에 대해서 최초/최종 단계의 위치에 존재하며, 이를 통해서 요청/응답의 정보를 변경하거나, Srping에 의해서 데이터가 변환되기 전의 순수한 Client의 요청/응답 값을 확인할 수 있습니다. 유일하게 ServletRequest, ServletResponse의 객체를 변환할 수 있습니다. 주로 Spring Framework에서는 request/response의 Logging 용도로 활용하거나, 인증과 관련된 Logis들을 해당 Filter에서 처리합니다. 이를 선/후 처리함으로써, Service business logic과 분리시킵니다. Client에.. 2021. 9. 12. Spring Boot - Exception 개괄 이전 글에 다루었던 Validation 라이브러리 편을 먼저 보시는 것을 권장합니다. https://getthismoment.tistory.com/84 validation과 함께 사용해야하는 exception 예외 처리에 관해서 알아봅시다. Spring boot에 내장되어있는 라이브러리 중에 예외처리를 손쉽게 도와주는 라이브러리가 있습니다. try/catch 나 throw exception 형식으로 주로 예외처리를 하지만, exception 라이브러리는 상황에 따라서 특정값을 예외처리하거나 사용자 정의에 의해서 예외처리를 하고 싶은 경우 유용하게 사용할 수 있습니다. 전역 예외 처리 @RestControllerAdvice @RestControllerAdvice public class GlobalContr.. 2021. 9. 10. Spring Boot - Validation 스프링 부트에서 손쉽게 Request 파라미터의 유효성 검사를 하는 라이브러리를 소개합니다.Validation 라이브러리는 dto에 어노테이션만 붙임으로써, Request 파라미터의 유효성 검사를 합니다. 또한 커스덤해서 유효성 검사를 할 수 있고 유효성에 맞지않으면 Response Message도 커스덤할 수 있기에 꾀나 유용하게 사용할 수 있습니다. Validation 라이브러리를 사용하기 위해서 다음과 같은 의존성을 추가 합니다.(Gradle 기준)implementation("org.springframework.boot:spring-boot-starter-validation") Validation 주요 어노테이션 Validation 사용 예제@RestController@RequestMappin.. 2021. 9. 9. Spring Boot - Annotation 참고자료 2021. 9. 7. Spring Boot - AOP (Aspect Oriented Programming) AOP (Aspect Oriented Programming)관점지향 프로그램스프링 어플리케이션은 대부분 특별한 경우를 제외하고는 MVC웹 어플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의. - Web Layer : REST API를 제공하며, Client 중심의 로직 적용- Business Layer : 내부 정책에 따른 logic을 개발하며, 주로 해당 부분을 개발- Data Layer : 데이터 베이스 및 외부와의 연동을 처리 AOP는 메소드나 특정 구역에 반복되는 로직들을 한 곳으로 모아서 코딩할 수 있게 해줍니다.비지니스 로직 이외의 반복되고, 일괄적으로 적용되고, 조건에 따라 변동될 수 있는 코드를 횡단관심이라고 합니다.이 횡단관심을 비지니스 로직으로부.. 2021. 9. 3. Spring Boot - IoC (Inversion of Control) IoC (Inversion of Control) 스프링에서는 일반적인 Java 객체를 new로 생성하여 개발자가 관리하는 것이 아닌 Spring Container에 모두 맡긴다. 즉, 개발자에서 프로임워크로 제어의 객체관리의 권한이 넘어 갔음으로 "제어의 역전"이라고 합니다. @SpringBootApplication 어노테이션을 붙이면 스프링 부트로 동작하게 한다는 뜻입니다. @SpringBootApplication 어노테이션 내부에는 다음과 같은 어노테이션이 존재합니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfigurat.. 2021. 9. 3. Spring Boot - DI (Dependency Injection) DI (Dependency Injection) 외부에서 객체 주입하면, 스프링이 객체의 생명 주기를 관리합니다. 개발자는 DI(주입)을 통해서 객체를 사용할 수 있습니다. 주입하는 주체는 스프링 컨테이너입니다. DI의 장점 의존성으로부터 격리시켜 코드 테스트에 용이합니다. DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트가 가능합니다. 코드를 확장하거나 변경할 때 영향을 최소화한다. (추상화) 순환참조를 막을 수 있다. // IEncoder.java // 인터페이스 public interface IEncoder { String encode(String message); } // Encoder.java // 사용할 객체 public class Encoder { private.. 2021. 9. 2. 이전 1 다음 728x90