반응형 개발/SpringBoot41 SpringBoot SpringDoc(OpenAPI)을 이용한 Swagger 그룹화, 전역인증&Parameter 설정 SpringDoc OpenAPI를 사용하여 Swagger에 표시되는 API들을 그룹화 시키는 방법과 JWT 인증을 전역으로 설정하는 방법을 알아본다. API 그룹화 API가 많아질수록 Swagger 표시되는 API가 많아져서 가독성이나 관리가 힘들어지는 부분이 있다. 이럴 경우 API들을 package나 url path를 기준으로 그룹화 시킬 수 있다. 먼저 그룹화하기 전에는 swagger에서는 일반적으로 아래와 같이 표현된다 그리고 그룹화를 group1, group2로 나눠서 적용하면 아래와 같이 표현된다. 우측 상단에 그룹을 선택할 수 있는 SelectBox가 뜨고 그룹에 따라 필터링해서 API를 조회가 가능해진다 아래는 그룹 적용을 위한 Bean 설정이다. 그룹화를 정의할 개수에 따라 Grouped.. 2022. 8. 3. SpringBoot SpringDoc(OpenAPI)을 이용한 Swagger 적용 SpringBoot로 백엔드 개발 시 API 도큐먼트를 위해 swagger를 많이 사용한다. 예전에는 springfox-swagger를 사용하여 적용하였는데 최근에 많이 사용되는 springdoc을 이용해서 swagger 설정을 해본다. 참고로 springfox-swagger는 2020년부터 업데이트가 되지 않고 있다. 1. 의존성 추가 gradle에 현재 최신 버전의 springdoc-openapi-ui 라이브러리 의존성을 추가한다. implementation 'org.springdoc:springdoc-openapi-ui:1.6.9' 2. 어플리케이션 실행 추가 설정없이 의존성만 추가하고 어플리케이션을 실행한 후 http://server:port/context-path/swagger-ui.html(e.. 2022. 8. 2. SpringBoot Log4jdbc 를 사용한 Mybatis 쿼리 로그 출력 SpringBoot에서 log4jdbc를 사용하면 SQL문 로그를 좀 더 가시적으로 출력할 수 있다. SQL문에 들어가는 파라메타도 바인딩이 되어 출력이 되고, 결과도 테이블 형태로 출력되어 보기가 편해진다. 1. log4jdbc 의존성 추가 먼저 아래와 같이 build.gradled에 log4jdbc 라이브러리 의존성을 추가한다. implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' 2. log4jdbc.log4j2.properties 파일 추가 src/main/resources 루트에 log4jdbc.log4j2.properties 파일을 추가하고 아래와 같이 입력한다. log4jdbc.spylogdelegator.name=ne.. 2022. 6. 5. SpringBoot InMemory DB(H2) 사용 SpringBoot 사용 시 간단히 기능 테스트 용도나 프로토타입 등으로 인메모리 DB를 쉽게 사용할 수 있다. 인메모리 DB로는 H2를 사용하는데 설정도 많이 간단하다. 매번 눈으로만 이런것이 가능하구나라고 봤는데 이번 기회에 한번 해보면서 정리 해본다. 1. H2 DB 의존성 추가 runtimeOnly 'com.h2database:h2' H2 의존성을 추가하게 되면 기본적으로 SpringBoot는 H2를 기본 DB로 설정하여 어플리케이션을 실행한다. 2. application.yml 설정 추가 spring: h2: console: enabled: true path: /h2-console datasource: driverClassName: org.h2.Driver url: jdbc:h2:mem:test.. 2022. 5. 31. SpringBoot Embedded Tomcat 세션 클러스터링 SpringBoot를 내장 톰캣으로 실행하고 만약 세션을 사용한다면 세션 클러스터링 설정이 필요하다. 토큰이나 Redis를 사용하는 경우에는 불필요하겠지만 내장 톰캣의 세션을 그대로 이용한다면 세션 클러스터링을 통해 세션 공유 설정을 해야지만 여러 대의 was로 서비스가 가능할 것이다. 테스트 환경 - SpringBoot 2.6.7, Tomcat 9.0.62, JDK 11 1. 의존성 설정 먼저 build.gradle에 tomcat-catalina-ha를 의존성으로 추가한다. implementation 'org.apache.tomcat:tomcat-catalina-ha:9.0.62' 2. Java Config 설정 @Configuration을 통해 내장 톰캣에 대한 세션 클러스터링 Java Config .. 2022. 5. 30. SpringBoot @RestControllerAdvice를 통한 예외 처리 SpringBoot에서 @ControllerAdvice, @RestControllerAdvice 활용해서 컨트롤러단의 예외를 전역으로 쉽게 관리할 수 있다. 먼저 @ControllerAdvice는 모든 @Controller가 선언된 클래스에 대한 예외를 전역으로 처리한다. @RestControllerAdvice는 @ControllerAdvice + @ResponseBody 어노테이션이다. 따라서 단순 예외 처리가 아닌 응답 객체를 리턴해야 하는 경우 @RestControllerAdvice가 유용하다. 참고로 @ControllerAdvice, @RestControllerAdvice 모두 basePackageClasses, basePackages 속성을 통해 클래스나 패키지 단위로 제한할 수 있다. @Res.. 2022. 5. 29. SpringBoot @RestControllerAdvice not working RestController 전역 예외처리를 위하여 @RestControllerAdvice를 적용하였다. 예외 타입 별로 리턴 메시지처리 등이 효율적으로 될 것 같아서 적용했는데 동작을 하지 않았다. 코드는 간단히 테스트용으로 아래와 같이 적용했다. @Slf4j @RestControllerAdvice public class MyControllerAdvice { @ExceptionHandler(MyException.class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public String myExceptionHandler(Exception e) { return "myexception"; } @ExceptionHandler(NoHandlerFoundExcep.. 2022. 5. 6. SpringBoot ResourceLoader 사용해서 classpath 파일 읽기 SpringBoot에서 ResourceLoader를 사용하여 classpath 파일들을 읽을 수 있다. getResource()메소드에서 "classpath:" 접두어로 설정하면 target/classes에서 리소스를 찾아서 볼러온다 아래는 간단한 ResourceLoader 코드 샘플이다. Resource resource = resourceLoader.getResource("classpath:/static/file.txt"); // 절대 경로 System.out.println(resource.getURI().getPath()); // File내용 String으로 가져오기 1 (JDK 11이상) String str1 = Files.readString(Path.of(resource.getURI())) // .. 2022. 3. 14. 이전 1 2 3 4 5 6 다음 반응형