스프링
-
애플리케이션 정보 - info스프링/스프링부트 2023. 10. 1. 14:01
info 엔드포인트에서 기본으로 제공하는 정보 java : 자바 런타임 정보 os : OS 정보 env : Environment 에서 info. 로 시작하는 정보 build : 빌드 정보, META-INF/build-info.properties 파일이 필요하다. git : git 정보, git.properties 파일이 필요하다. 여기서 env, java, os는 기본적으로 비활성화 되어있다. application.yml management: info: java: enabled: true os: enabled: true env: enabled: true endpoint: shutdown: enabled: true info: app: name: hello-actuator company: jch info는 ..
-
헬스 정보 - 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..