스프링/스프링부트
-
헬스 정보 - health스프링/스프링부트 2023. 10. 1. 13:39
헬스 정보는 애플리케이션에 문제가 발생했을 때 빠르게 인지할 수 있도록 도와주는 액츄에이터다. 엔드 포인트 : localhost:8080/actuator/health 헬스 정보는 애플리케이션이 요청에 응답할 수 있는 상황인지를 알려주는 것을 넘어서 데이터베이스, 디스크 사용량같은 다양한 정보도 함께 제공해준다. application.yml management: endpoint: health: show-details: always endpoints: web: exposure: include: "*" health: show-details: always를 입력하면 health의 상세정보를 보여준다. status: UP이라 되어있는 것은 애플리케이션이 작동되고 있다는 것이다. db의 status도 UP이라 되어..
-
액츄에이터와 액츄에이터 엔드포인트스프링/스프링부트 2023. 10. 1. 13:16
개발이 끝나고 운영 단계에서 실시간 모니터링을 하는 것은 매우 중요한 일이다. 스프링 부트가 제공하는 액츄에이터는 프로덕션 준비 기능을 매우 편리하게 사용할 수 있는 기능들을 제공한다. 또한 마이크로미터, 프로메테우스, 그라파나 같은 최근 유행하는 모니터링 시스템과 매우 쉽게 연동할 수 있는 기능도 제공한다. implementation 'org.springframework.boot:spring-boot-starter-actuator' //actuator 추가 build.gradle에서 액츄에이터를 위와 같이 추가할 수 있다. application.yml management: endpoints: web: exposure: include: "*" appication.yml에 다음과 같이 "*"을 입력하면 a..
-
@Profile스프링/스프링부트 2023. 9. 30. 22:10
프로필과 외부 설정을 사용해서 각 환경마다 설정값을 다르게 적용하는데, 설정값이 다른 정도가 아니라 각 환경마다 서로 다른 빈을 적용해야하는 상황이 있을 때도 있다. 로컬 개발에서는 로직이 수행되지만 결제가 되지 않고, 운영 환경에서는 실제 결제까지 되는 기능을 예제로 작성할 것이다. PayClient 인터페이스 public interface PayClient { void pay(int money); } LocalPayClient.class - 로컬 환경 @Slf4j public class LocalPayClient implements PayClient{ @Override public void pay(int money) { log.info("로컬 결제 money={}", money); // 실제 결제 x..
-
YAML스프링/스프링부트 2023. 9. 30. 21:52
스프링은 설정 데이터를 사용할 때 application.properties 뿐만 아니라 application.yml 이라는 형식도 지원한다. 사람이 읽기 좋은 형식으로 이루어진 파일이다. yml 파일 예시 my: datasource: url: local.db.com username: local_user password: local_pw etc: max-connection: 1 timeout: 60s options: LOCAL, CACHE application.yml인데 한 눈에 파악하기 쉽기 때문에 yml을 자주 사용한다고 한다. application.properties , application.yml 을 같이 사용하면 application.properties가 우선권을 가진다. 둘 다 같이 사용하는건 ..
-
@ConfigurationProperties - 외부 설정 사용스프링/스프링부트 2023. 9. 30. 21:45
application.properties my.datasource.url=local.db.com my.datasource.username=username my.datasource.password=password my.datasource.etc.max-connection=1 my.datasource.etc.timeout=3500ms my.datasource.etc.options=CACHE,ADMIN my.datasource까지 중복된 것이기 때문에 객체로 관리하면 더 편할 것이다. MyDataSourcePropertiesV1.class @Getter @ConfigurationProperties("my.datasource") public class MyDataSourceProperties { private ..
-
@Value - 외부 설정 사용스프링/스프링부트 2023. 9. 30. 21:05
스프링이 지원하는 외부 설정 조회 방법들 Environment @Value - 값 주입 @ConfigurationProperties - 타입 안전한 설정 속성 이전 포스팅에서 외부 설정을 공부하면서 사용한 Environment에는 약간의 단점이 있다. Environment 를 직접 주입받고, env.getProperty(key) 를 통해서 값을 꺼내는 과정을 반복해야 한다는 점이다. 따라서 스프링은 @Value를 통해서 외부 설정값을 주입받는 편리한 기능을 제공해준다. @Slf4j @Configuration public class MyDataSourceValueConfig { @Value("${my.datasource.url}") private String url; @Value("${my.datasour..
-
외부 설정의 우선순위스프링/스프링부트 2023. 9. 30. 16:42
1. 설정 데이터의 우선순위 application.properties spring.config.activate.on-profile=dev url=dev.db.com username=dev_user password=dev_pw #--- spring.config.activate.on-profile=prod url=prod.db.com username=prod_user password=prod_pw 위와 같은 상황에서 프로필을 설정하지 않으면 default라는 기본 프로필이 적용된다. 위의 2개의 문서는 둘 다 활성화가 되지 않으며 url, username, password를 출력해보면 다 null로 뜨게 된다. 기본값 내 PC에서 개발하는 로컬 개발 환경에서 프로필을 항상 지정하는 것은 번거롭다. url=l..
-
외부 설정 4 - 설정 데이터스프링/스프링부트 2023. 9. 30. 16:22
지금까지 학습한 OS 환경 변수, 자바 시스템 속성, 커맨드 라인 옵션 인수는 사용해야 하는 값이 늘어날 수록 사용하기가 불편해진다. 실무에서는 수많은 설정값을 사용하기도 하므로 이런 값들을 프로그램을 실행할 때 마다 입력하게 되면 번거롭고 관리도 어렵다. 대안으로 설정값을 파일에 넣어서 관리한 다음에 애플리케이션 로딩 시점에 파일을 읽는 방법이 있다. 1. 외부 파일 application.properties를 각각의 소스코드에 위치시키는 것이 아니라 외부 설정 파일로 각각 서버에 두는 것이다. 빌드 후에 빌드 파일이 있는 경로에 가서 application.properties라는 파일을 만들어준다. url=dev.db.com username=dev_user password=dev_pw 파일에 위의 내용을..