|
|
|
@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2012-2017 the original author or authors.
|
|
|
|
|
* Copyright 2012-2018 the original author or authors.
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
@ -23,6 +23,7 @@ import java.lang.annotation.RetentionPolicy;
|
|
|
|
|
import java.lang.annotation.Target;
|
|
|
|
|
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
|
|
|
|
|
import org.springframework.boot.actuate.endpoint.annotation.EndpointExtension;
|
|
|
|
|
import org.springframework.context.annotation.Conditional;
|
|
|
|
|
import org.springframework.core.env.Environment;
|
|
|
|
|
|
|
|
|
@ -31,6 +32,60 @@ import org.springframework.core.env.Environment;
|
|
|
|
|
* according to the endpoints specific {@link Environment} property, falling back to
|
|
|
|
|
* {@code management.endpoints.enabled-by-default} or failing that
|
|
|
|
|
* {@link Endpoint#enableByDefault()}.
|
|
|
|
|
* <p>
|
|
|
|
|
* When placed on a {@code @Bean} method, the endpoint defaults to the return type of the
|
|
|
|
|
* factory method:
|
|
|
|
|
*
|
|
|
|
|
* <pre class="code">
|
|
|
|
|
* @Configuration
|
|
|
|
|
* public class MyConfiguration {
|
|
|
|
|
*
|
|
|
|
|
* @ConditionalOnEnableEndpoint
|
|
|
|
|
* @Bean
|
|
|
|
|
* public MyEndpoint myEndpoint() {
|
|
|
|
|
* ...
|
|
|
|
|
* }
|
|
|
|
|
*
|
|
|
|
|
* }</pre>
|
|
|
|
|
* <p>
|
|
|
|
|
* It is also possible to use the same mechanism for extensions:
|
|
|
|
|
*
|
|
|
|
|
* <pre class="code">
|
|
|
|
|
* @Configuration
|
|
|
|
|
* public class MyConfiguration {
|
|
|
|
|
*
|
|
|
|
|
* @ConditionalOnEnableEndpoint
|
|
|
|
|
* @Bean
|
|
|
|
|
* public MyEndpointWebExtension myEndpointWebExtension() {
|
|
|
|
|
* ...
|
|
|
|
|
* }
|
|
|
|
|
*
|
|
|
|
|
* }</pre>
|
|
|
|
|
* <p>
|
|
|
|
|
* In the sample above, {@code MyEndpointWebExtension} will be created if the endpoint is
|
|
|
|
|
* enabled as defined by the rules above. {@code MyEndpointWebExtension} must be a regular
|
|
|
|
|
* extension that refers to an endpoint, something like:
|
|
|
|
|
*
|
|
|
|
|
* <pre class="code">
|
|
|
|
|
* @EndpointWebExtension(endpoint = MyEndpoint.class)
|
|
|
|
|
* public class MyEndpointWebExtension {
|
|
|
|
|
*
|
|
|
|
|
* }</pre>
|
|
|
|
|
* <p>
|
|
|
|
|
* Alternatively, the target endpoint can be manually specified for components that should
|
|
|
|
|
* only be created when a given endpoint is enabled:
|
|
|
|
|
*
|
|
|
|
|
* <pre class="code">
|
|
|
|
|
* @Configuration
|
|
|
|
|
* public class MyConfiguration {
|
|
|
|
|
*
|
|
|
|
|
* @ConditionalOnEnableEndpoint(endpoint = MyEndpoint.class)
|
|
|
|
|
* @Bean
|
|
|
|
|
* public MyComponent myComponent() {
|
|
|
|
|
* ...
|
|
|
|
|
* }
|
|
|
|
|
*
|
|
|
|
|
* }</pre>
|
|
|
|
|
*
|
|
|
|
|
* @author Stephane Nicoll
|
|
|
|
|
* @since 2.0.0
|
|
|
|
@ -42,4 +97,12 @@ import org.springframework.core.env.Environment;
|
|
|
|
|
@Conditional(OnEnabledEndpointCondition.class)
|
|
|
|
|
public @interface ConditionalOnEnabledEndpoint {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The endpoint type that should be checked. Inferred when the return type of the
|
|
|
|
|
* {@code @Bean} method is either an {@link Endpoint} or an {@link EndpointExtension}.
|
|
|
|
|
* @return the endpoint type to check
|
|
|
|
|
* @since 2.0.6
|
|
|
|
|
*/
|
|
|
|
|
Class<?> endpoint() default Void.class;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|