pooney
Spring boot @PropertySource로 yml 로드 방법
Spring boot 2021. 11. 7. 19:52

안녕하세요. 오늘은 @PropertySource를 통해 yml파일을 로드하는 방법을 알려드리고자 합니다. 프로젝트를 진행하면서 카카오,네이버에서 제공하는 API를 호출할때 필요한 secret key를 property파일로 분리 한 후 Bean,Configuration으로 등록하여 호출 시 해당 secrey key를 API 호출 시 실어 사용하는 경우가 많았습니다. 이때 많은 사람들이 yml를 사용하지 않고 properties를 사용하는데 저는 yml를 사용하고 하고 싶어서 찾아낸 방법을 공유하고자 합니다. 그러면 우선 @PropertySource를 알아야 할 것 같습니다. @PropertySource @PropertySource는 기본적으로 설정파일을 읽어 속성을 주입하는 기능을 담당합니다. 간단한 예시..

article thumbnail
Spring boot - jenkins(젠킨스) webhook 연동
Spring boot 2021. 10. 4. 15:19

CI/CD에 대표적인 젠킨스의 WebHook을 알아 보려고 합니다. 그렇다면 WebHook은 무엇일까요?? WebHook WebHook은 어떠한 이벤트가 일어나면 설정했던 URL로 특정 정보,이벤트를 보내거나 알려주는것을 말합니다. 쉽게 보면, 특정행동이 일아나면 알려주는 것이라고 보면 됩니다. WebHook을 사용하지 않고 특정 이벤트 혹은 변경이 일어 났는지 알고자 한다면 짧은 주기로 서버에 계속 요청하여 확인 하는 방법을 즉 polling 사용해야 하는데 그렇게 한다면 많은 부담을 줄 것입니다. 그에 비해 Webhook관련 설정을 하고 그저 기다리면 필요한 정보 및 이벤트를 알려 주기 때문에 해당 서비스에 부담을 줄일 수 있어 많이 사용합니다. 아래를 보시면 쉽게 이해 할 수 있을 꺼에요! 그렇다면..

article thumbnail
Spring boot - AOP 파라미터 넘기기
Spring boot 2021. 7. 20. 14:06

안녕하세요 오늘은 스프링 부트 AOP를 통해 Controller 호출로그와 파라미터 넘기기를 해보려고 합니다. 많은 글에서 AOP를 통해 로그를 찍긴 하지만 파라미터를 어떻게 넘길 수 있는지는 설명이 없어서 직접 경험하고 찾아서 한번 만들어 보았습니다. 이경우 리플렉션의 사전 지식이 필요합니다. build.gradle compile 'org.springframework.boot:spring-boot-starter-aop' LogAop @Component @Aspect public class LogAop { Logger logger = LoggerFactory.getLogger(LogAop.class); @Around("execution(* com.develop.kr.tddproject.controller..

article thumbnail
Spring boot Gradle 을 이용한 WAR 배포
Spring boot 2021. 2. 5. 16:51

스프링 부트는 내장 톰켓이 존재하여 jar를 이용한 손쉬운 배포가 가능합니다. 때문에 아래와 같이 처음 프로젝트를 생성하면서 jar를 이용한 패킹을 선택하지만 외부 톰켓을 이용하여 배포해야하는 경우에는 WAR를 이용한 배포를 하는 경우가 많습니다. 그러면 어떻게 war를 이용하여 배포를 하는지 설명하겠습니다. Gradle + War 배포 ※ 신규 프로젝트를 생성해주세요. 신규 프로젝트 생성하는 방법은 생략 하겠습니다. 시스템 환경 Spring boot (Framework) Gradle (Build Tool) Intellj (IDEA) ▶ 처음 Intellj 우축 상단을 보면 Gradle이 있을 것입니다. bulid를 보면 bootJar , jar는 존재하지만 war는 존재하지 않습니다. war를 배포하기..

article thumbnail
Spring boot @JsonFilter
Spring boot 2020. 7. 5. 19:08

사용자에 따른 json 형태로 데이터를 보내고자 할때 보내지 않아도 되는 데이터는 필터링하여 보내고 싶은 경우가 있다. 이떄 사용하는 것이 @JsonFilter 이다 User package com.ex.boot.web; import com.fasterxml.jackson.annotation.JsonFilter; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Data @NoArgsConstructor @AllArgsConstructor @Jso..

article thumbnail
Spring boot @Valid를 사용하여 유효성 체크
Spring boot 2020. 7. 5. 18:03

유효성을 체크하기 위하여 많이 사용하는 방법은 @Valid을 사용하는 것이다. 사용하기 위해서는 dependency를 추가해 줘야한다 Gradle dependency compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final' compile group: 'org.hibernate.validator', name: 'hibernate-validator', version: '6.1.5.Final' TestController @RestController public class TestController { //사용자 조회 @GetMapping("/user") public String user(String id){ throw n..

article thumbnail
Spring boot AOP를 이용한 Exception Handling
Spring boot 2020. 7. 5. 16:28

일반화 된 예외를 처리하기 위하여 Aop를 활용한 Exception Handling을 할 것입니다. 그렇기 떄문에 우리가 사용하는 시스템에서 예외가 발생했을 때 에러를 Handling 할 수 있는 Spring boot 에서 제공하는 클래스를 만들 것 입니다. Controller에 요청을 했을때 예외가 발생하는 코드를 작성하였습니다. TestController @RestController public class TestController { @GetMapping("/user") public String user(String id){ throw new UserNotFoundExtion(String.format("존재하지 않는 회원 [ID : %s]", id)); } } UserNotFoundExtion @R..

article thumbnail
Spring boot API 요청 시 Status 변경
Spring boot 2020. 7. 5. 03:36

Rest Api를 구현할 경우 4xx , 5xx , 2xx 등 여러 요청에따른 Status를 사용자에게 전달합니다. 만약 사용자가 존재하지 않는 정보를 요청한 경우 예외가 발생 할 수 있습니다. 예외가 발생하면 서브에서 발생한 에러인 500에러를 전달 할 것입니다. 이러한 status를 변경하여 사용자에게 전달할 수 있는 방법이 있습니다. 그것은 바로 @ResponseStatus를 사용하는 것입니다. @ResponseStatus 사용전 아래는 존재하지 않는 회원을 요청하는 경우로 가정하여 일부러 예외가 발생하는 코드를 작성했습니다. 에러는 error 메세지를 출력하는 ErrorCreate를 만들어 던지겠습니다. TestController @RestController public class TestCont..