Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
a57d0f08
Commit
a57d0f08
authored
Jul 17, 2018
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reinstate order of WebMvcMetricsFilter
Closes gh-13781
parent
944ed767
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
133 additions
and
3 deletions
+133
-3
WebMvcMetricsAutoConfiguration.java
...e/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java
+2
-0
WebMvcMetricsAutoConfigurationTests.java
...gure/web/servlet/WebMvcMetricsAutoConfigurationTests.java
+131
-0
WebMvcMetricsFilter.java
...boot/actuate/metrics/web/servlet/WebMvcMetricsFilter.java
+0
-3
No files found.
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.java
View file @
a57d0f08
...
@@ -37,6 +37,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
...
@@ -37,6 +37,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.Ordered
;
import
org.springframework.web.context.WebApplicationContext
;
import
org.springframework.web.context.WebApplicationContext
;
import
org.springframework.web.servlet.DispatcherServlet
;
import
org.springframework.web.servlet.DispatcherServlet
;
...
@@ -72,6 +73,7 @@ public class WebMvcMetricsAutoConfiguration {
...
@@ -72,6 +73,7 @@ public class WebMvcMetricsAutoConfiguration {
serverProperties
.
isAutoTimeRequests
());
serverProperties
.
isAutoTimeRequests
());
FilterRegistrationBean
<
WebMvcMetricsFilter
>
registration
=
new
FilterRegistrationBean
<>(
FilterRegistrationBean
<
WebMvcMetricsFilter
>
registration
=
new
FilterRegistrationBean
<>(
filter
);
filter
);
registration
.
setOrder
(
Ordered
.
HIGHEST_PRECEDENCE
+
1
);
registration
.
setDispatcherTypes
(
DispatcherType
.
REQUEST
,
DispatcherType
.
ASYNC
);
registration
.
setDispatcherTypes
(
DispatcherType
.
REQUEST
,
DispatcherType
.
ASYNC
);
return
registration
;
return
registration
;
}
}
...
...
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/web/servlet/WebMvcMetricsAutoConfigurationTests.java
0 → 100644
View file @
a57d0f08
/*
* 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
web
.
servlet
;
import
java.util.Collections
;
import
java.util.EnumSet
;
import
javax.servlet.DispatcherType
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
io.micrometer.core.instrument.MeterRegistry
;
import
io.micrometer.core.instrument.Tag
;
import
io.micrometer.core.instrument.simple.SimpleMeterRegistry
;
import
org.junit.Test
;
import
org.springframework.boot.actuate.autoconfigure.metrics.web.servlet.WebMvcMetricsAutoConfiguration
;
import
org.springframework.boot.actuate.metrics.web.servlet.DefaultWebMvcTagsProvider
;
import
org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter
;
import
org.springframework.boot.actuate.metrics.web.servlet.WebMvcTagsProvider
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.test.context.runner.WebApplicationContextRunner
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.Ordered
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link WebMvcMetricsAutoConfiguration}.
*
* @author Andy Wilkinson
*/
public
class
WebMvcMetricsAutoConfigurationTests
{
private
WebApplicationContextRunner
contextRunner
=
new
WebApplicationContextRunner
()
.
withConfiguration
(
AutoConfigurations
.
of
(
WebMvcMetricsAutoConfiguration
.
class
));
@Test
public
void
backsOffWhenMeterRegistryIsMissing
()
{
this
.
contextRunner
.
run
((
context
)
->
assertThat
(
context
)
.
doesNotHaveBean
(
WebMvcMetricsAutoConfiguration
.
class
));
}
@Test
public
void
definesTagsProviderAndFilterWhenMeterRegistryIsPresent
()
{
this
.
contextRunner
.
withUserConfiguration
(
MeterRegistryConfiguration
.
class
)
.
run
((
context
)
->
{
assertThat
(
context
).
hasSingleBean
(
DefaultWebMvcTagsProvider
.
class
);
assertThat
(
context
).
hasSingleBean
(
FilterRegistrationBean
.
class
);
assertThat
(
context
.
getBean
(
FilterRegistrationBean
.
class
).
getFilter
())
.
isInstanceOf
(
WebMvcMetricsFilter
.
class
);
});
}
@Test
public
void
tagsProviderBacksOff
()
{
this
.
contextRunner
.
withUserConfiguration
(
MeterRegistryConfiguration
.
class
,
TagsProviderConfiguration
.
class
).
run
((
context
)
->
{
assertThat
(
context
).
doesNotHaveBean
(
DefaultWebMvcTagsProvider
.
class
);
assertThat
(
context
).
hasSingleBean
(
TestWebMvcTagsProvider
.
class
);
});
}
@Test
public
void
filterRegistrationHasExpectedDispatcherTypesAndOrder
()
{
this
.
contextRunner
.
withUserConfiguration
(
MeterRegistryConfiguration
.
class
)
.
run
((
context
)
->
{
FilterRegistrationBean
<?>
registration
=
context
.
getBean
(
FilterRegistrationBean
.
class
);
assertThat
(
registration
).
hasFieldOrPropertyWithValue
(
"dispatcherTypes"
,
EnumSet
.
of
(
DispatcherType
.
REQUEST
,
DispatcherType
.
ASYNC
));
assertThat
(
registration
.
getOrder
())
.
isEqualTo
(
Ordered
.
HIGHEST_PRECEDENCE
+
1
);
});
}
@Configuration
static
class
MeterRegistryConfiguration
{
@Bean
public
MeterRegistry
meterRegistry
()
{
return
new
SimpleMeterRegistry
();
}
}
@Configuration
static
class
TagsProviderConfiguration
{
@Bean
public
TestWebMvcTagsProvider
tagsProvider
()
{
return
new
TestWebMvcTagsProvider
();
}
}
private
static
final
class
TestWebMvcTagsProvider
implements
WebMvcTagsProvider
{
@Override
public
Iterable
<
Tag
>
getTags
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
Throwable
exception
)
{
return
Collections
.
emptyList
();
}
@Override
public
Iterable
<
Tag
>
getLongRequestTags
(
HttpServletRequest
request
,
Object
handler
)
{
return
Collections
.
emptyList
();
}
}
}
spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/metrics/web/servlet/WebMvcMetricsFilter.java
View file @
a57d0f08
...
@@ -42,9 +42,7 @@ import org.slf4j.Logger;
...
@@ -42,9 +42,7 @@ import org.slf4j.Logger;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
org.springframework.web.filter.OncePerRequestFilter
;
import
org.springframework.web.method.HandlerMethod
;
import
org.springframework.web.method.HandlerMethod
;
...
@@ -63,7 +61,6 @@ import org.springframework.web.util.NestedServletException;
...
@@ -63,7 +61,6 @@ import org.springframework.web.util.NestedServletException;
* @author Phillip Webb
* @author Phillip Webb
* @since 2.0.0
* @since 2.0.0
*/
*/
@Order
(
Ordered
.
HIGHEST_PRECEDENCE
+
1
)
public
class
WebMvcMetricsFilter
extends
OncePerRequestFilter
{
public
class
WebMvcMetricsFilter
extends
OncePerRequestFilter
{
private
static
final
Logger
logger
=
LoggerFactory
private
static
final
Logger
logger
=
LoggerFactory
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment