본문 바로가기
반응형

SpringBoot37

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.
AWS CodeDeploy로 EC2 Auto Scaling Group 배포(java) CodeDeploy 클라우드 기반 배포 자동화를 위한 CD(Continuous Deploy) 도구 AWS EC2, ECS, Lambda 및 온프레미스 서버에도 배포 가능 S3, CodeCommit, CodePipeline, Git, ELB, Auto-Scaling 등과 통합 CodeDeploy 주요 구성 요소 AppSpec 파일: 배포할 어플리케이션에 대한 정보를 설정(yml or json) 배포 구성: CodeDeploy에서 사용하는 배포규칙,배포성공/실패 조건 세트 - EC2/온프레미스 인스턴스의 최소개수지정, Lambda함수 버전으로 특정 트래픽 라우팅 방식(Canary, Linear, All-at-Once) 등 배포그룹: 개별 인스턴스들의 세트, 특정 태그가 지정된 인스턴스 or ASG에 포함된 .. 2022. 2. 27.
AWS CodeBuild로 빌드하기(SpringBoot, Maven) CodeBuild 클라우드의 완전 관리형 CI(Continuous Integration) 서비스: 소스코드 컴파일, 단위테스트, 빌드 파일 생성 빌드서버의 프로비저닝 및 운영/관리 불필요 Maven, Gradle 등 많이 사용되는 프로그래밍 언어 및 도구에 따라 사전 패키지된 빌드 환경(빌드 프로젝트)을 제공 빌드 수행 볼륨에 따라 자동 확장/축소 가능 및 사용한 빌드 시간만큼만 비용을 지불 CodeBuild 동작방식 Source Control - GitHub, CodeCommit, S3 등에서 소스 불러오기 Build Project - 소스코드위치, 빌드환경, 빌드명령, 빌드 결과 저장위치 등 빌드 실행 방식 정의 Build Environment - Build Project 기반으로 빌드 환경 생성 및.. 2022. 2. 26.
SpringBoot HikariCP 상태 log 보기 SpringBoot application.yml에서 HikariCP 상태 log를 확인하는 방법 logging: com.zaxxer.hikari.HikariConfig: DEBUG com.zaxxer.hikari: TRACE 위와 같이 설정하면 아래와 같이 상태를 log에서 볼 수 있다 추가적으로 아래와 같이 sping.datasource.hikari 항목에 HikariCP 옵션들을 추가 할 수 있다 spring: datasource: url: jdbc:mysql... username: xxxx password: xxxxxx driver-class-name: com.mysql.jdbc.Driver hikari: connection-timeout: 3000 validation-timeout: 3000 mi.. 2022. 2. 24.
SpringBoot RestTemplate ResponseType에 Generic 설정 RestTemplate사용 시 Response에 매핑하는 객체에 Generic를 설정하는 경우가 있다. 아래와 같이 공통 Response객체에 "data"필드의 객체를 원하는 객체로 설정을 하는 경우이다 public class ResponseVo { private RltVo rlt; private List data; ... } 일단 아래와 같이 시도를 해보면 에러가 발생하는 등으로 데이터를 제대로 받아올 수 없다 // 실패 ResponseVo response = restTemplate.exchange("myurl", HttpMethod.POST, entity, ResponseVo.class).getBody(); RestTemplate의 exchange() 메소드를 보면 ParameterizedTypeRe.. 2022. 2. 21.
IntelliJ Eclipse SpringBoot 프로젝트 Import Eclipse(STS)에서 실행하던 SpringBoot 기반 프로젝트를 IntelliJ로 import하는 방법 - IntelliJ Project 하나를 Empty Project로 생성한다. 단일 프로젝트일 경우 필요없지만 Eclipse workspace에 여러 프로젝트들이 있어서 먼저 Empty Project를 생성 - 프로젝트명은 'Test'로 하고 생성하고 아래와 같이 확인 - "Module from Existing Sources..." 메뉴를 선택하고 Eclipse workspace에서 import할 하나의 프로젝트를 선택한다 - Eclipse를 선택하고 Next - 경로정도만 확인만하고 나머지는 디폴트로 두고 Next - 프로젝트를 선택하고 Next - 그냥 Next - 사용할 JDK를 선택하고 .. 2022. 2. 11.
반응형