본문 바로가기
반응형

SpringBoot34

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.
AWS ECR SpringBoot Docker Image Push AWS에서 제공하는 Image Repository에 SpringBoot로 작성된 Docker Image를 Push하는 방법을 정리해본다. 1. Dockerfile 작성 먼저 간단한 SpringBoot 어플리케이션에 Dockerfile을 작성한다. Dockerfile 내용은 아래와 같이 작성한다. FROM adoptopenjdk/openjdk11:jdk-11.0.11_9-alpine-slim ARG JAR_FILE_PATH=build/libs/*.jar COPY ${JAR_FILE_PATH} app.jar ENTRYPOINT ["java", "-jar", "app.jar"] 참고로 베이스 이미지를 'FROM adoptopenjdk/openjdk11'로 설정을 했을 때와 'FROM adoptopenjdk/o.. 2022. 6. 1.
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.
반응형