스프링 부트 내의 /info 엔드포인트에 프로그래밍 방식으로 추가하는 방법은 무엇입니까?
에 추가하는 방법/info
Spring Boot의 엔드포인트를 프로그래밍 방식으로 사용할 수 있습니까?이 매뉴얼에서는 이것이 다음 경우에 가능한 것으로 기술되어 있습니다./health
사용을 통한 엔드포인트HealthIndicator
인터페이스입니다.뭐 필요한 거라도 있어?/info
엔드포인트도?
운영체제 이름과 버전, 기타 런타임 정보를 추가하고 싶습니다.
Spring Boot 1.4 에서는, 다음과 같이 선언할 수 있습니다.InfoContributer
콩을 사용하면 훨씬 쉬워집니다.
@Component
public class ExampleInfoContributor implements InfoContributor {
@Override
public void contribute(Info.Builder builder) {
builder.withDetail("example",
Collections.singletonMap("key", "value"));
}
}
자세한 내용은 http://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/ #production-ready-application-info-custom을 참조하십시오.
승인된 답변은 실제로 InfoEndpoint를 클로빙하고 추가하지 않습니다.
정보에 추가할 수 있는 한 가지 방법은@Configuration
클래스, 추가@Autowired
다음에 추가 속성을 추가하는 메서드info.*
환경에 대한 관습.그리고나서InfoEndpoint
호출되면 픽업합니다.
다음과 같은 작업을 수행할 수 있습니다.
@Autowired
public void setInfoProperties(ConfigurableEnvironment env) {
/* These properties will show up in the Spring Boot Actuator /info endpoint */
Properties props = new Properties();
props.put("info.timeZone", ZoneId.systemDefault().toString());
env.getPropertySources().addFirst(new PropertiesPropertySource("extra-info-props", props));
}
원하는 작업을 수행하는 한 가지 방법(전체 커스텀속성을 표시할 필요가 있는 경우)은 기본값보다 우선하는 InfoEndpoint 유형의 빈을 선언하는 것입니다.
@Bean
public InfoEndpoint infoEndpoint() {
final LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
map.put("test", "value"); //put whatever other values you need here
return new InfoEndpoint(map);
}
위의 코드에서 알 수 있듯이 지도에는 필요한 정보가 모두 포함될 수 있습니다.
표시할 데이터가 사용자 지정이 아닌 환경에서 검색할 수 있는 경우에는 이 데이터를 재정의할 필요가 없습니다.InfoEndpoint
bean. 단, 속성 파일에 속성을 추가하는 것만으로 프리픽스는 다음과 같습니다.info
OS명을 평가하는 예를 다음에 나타냅니다.
info.os = ${os.name}
위의 코드에서는 Spring Boot에 의해 오른쪽 표현식이 평가된 후,/info
엔드 포인트
마지막 주의사항으로 이미 많은 환경정보를 입수할 수 있습니다./env
엔드 포인트
갱신하다
@shabinjo에서 지적했듯이 새로운 Spring Boot 버전에는 없습니다.InfoEndpoint
맵을 받아들이는 컨스트럭터.다만, 다음의 스니펫을 사용할 수 있습니다.
@Bean
public InfoEndpoint infoEndpoint() {
final Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("test", "value"); //put whatever other values you need here
return new InfoEndpoint(new MapInfoContributor(map));
}
위의 코드에 의해 디폴트 정보가 완전히 덮어쓰게 되어, 최종적으로는/info
이 문제를 해결하려면 다음 bean을 추가할 수 있습니다.
@Bean
public MapInfoContributor mapInfoContributor() {
return new MapInfoContributor(new HashMap<String, Object>() {{
put("test", "value");
}});
}
커스텀 정보를 추가하려면 ApplicationListener 내에 커스텀 PropertySource를 추가할 수 있어야 합니다.* 환경에 대한 속성(예에 대해서는 다음 답변 참조)Spring-boot application.properties를 프로그래밍 방식으로 덮어쓰는 방법)
언급URL : https://stackoverflow.com/questions/23863972/how-do-i-add-things-to-the-info-endpoint-in-spring-boot-programmatically
'programing' 카테고리의 다른 글
Android에서 요청을 통해 JSON 개체를 전송하는 방법은 무엇입니까? (0) | 2023.03.23 |
---|---|
스냅샷을 생성할 때 Jest/Enzym ShowlowWrapper가 비어 있습니다. (0) | 2023.03.23 |
UI 라우터를 사용하여 현재 상태 이름 노출 (0) | 2023.03.23 |
Spring Crud Repository를 사용한 대소문자를 구분하지 않는 쿼리 (0) | 2023.03.23 |
ng-if in react.js에 해당하는 것은 무엇입니까? (0) | 2023.03.23 |