[bs-111] Extract TraceFilterConfiguration into separate file

We want the traces to be collected for the main app, but reported
in the management app, so the confi has to be separate.

[#49578819]
This commit is contained in:
Dave Syer 2013-05-09 12:37:23 +01:00
parent ceab9b9b33
commit a0e51d06ea
5 changed files with 76 additions and 34 deletions

View File

@ -40,8 +40,9 @@ import com.fasterxml.jackson.databind.SerializationFeature;
*/
@Configuration
@Import({ ManagementConfiguration.class, MetricConfiguration.class,
ServerConfiguration.class, SecurityConfiguration.class, TraceConfiguration.class,
MetricFilterConfiguration.class, AuditConfiguration.class })
ServerConfiguration.class, SecurityConfiguration.class,
TraceFilterConfiguration.class, MetricFilterConfiguration.class,
AuditConfiguration.class })
public class ActuatorAutoConfiguration extends WebMvcConfigurationSupport {
@Override

View File

@ -51,7 +51,7 @@ public class ManagementConfiguration implements ApplicationContextAware, Disposa
@ConditionalOnExpression("${server.port:8080} == ${management.port:${server.port:8080}}")
@Configuration
@Import({ VarzConfiguration.class, HealthzConfiguration.class,
ShutdownConfiguration.class })
ShutdownConfiguration.class, TraceConfiguration.class })
public static class ManagementEndpointsConfiguration {
}
@ -78,7 +78,7 @@ public class ManagementConfiguration implements ApplicationContextAware, Disposa
context.setParent(this.parent);
context.register(ManagementServerConfiguration.class,
VarzConfiguration.class, HealthzConfiguration.class,
ShutdownConfiguration.class);
ShutdownConfiguration.class, TraceConfiguration.class);
context.refresh();
this.context = context;
}

View File

@ -18,13 +18,9 @@ package org.springframework.bootstrap.actuate.autoconfigure;
import javax.servlet.Servlet;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.bootstrap.actuate.trace.InMemoryTraceRepository;
import org.springframework.bootstrap.actuate.trace.TraceEndpoint;
import org.springframework.bootstrap.actuate.trace.TraceEndpoints;
import org.springframework.bootstrap.actuate.trace.TraceRepository;
import org.springframework.bootstrap.actuate.trace.WebRequestLoggingFilter;
import org.springframework.bootstrap.context.annotation.ConditionalOnClass;
import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean;
import org.springframework.bootstrap.context.annotation.EnableAutoConfiguration;
@ -38,33 +34,16 @@ import org.springframework.web.servlet.DispatcherServlet;
* @author Dave Syer
*/
@Configuration
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
@ConditionalOnMissingBean({ TraceEndpoints.class })
public class TraceConfiguration {
@Autowired(required = false)
private TraceRepository traceRepository = new InMemoryTraceRepository();
@Value("${management.dump_requests:false}")
private boolean dumpRequests;
@Autowired
private TraceRepository traceRepository;
@Bean
@ConditionalOnMissingBean(TraceRepository.class)
protected TraceRepository traceRepository() {
return this.traceRepository;
}
@Bean
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
@ConditionalOnMissingBean({ TraceEndpoint.class })
public TraceEndpoint traceEndpoint() {
return new TraceEndpoint(this.traceRepository);
}
@Bean
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
public WebRequestLoggingFilter securityFilterPostProcessor(BeanFactory beanFactory) {
WebRequestLoggingFilter filter = new WebRequestLoggingFilter(this.traceRepository);
filter.setDumpRequests(this.dumpRequests);
return filter;
public TraceEndpoints traceEndpoint() {
return new TraceEndpoints(this.traceRepository);
}
}

View File

@ -0,0 +1,62 @@
/*
* Copyright 2012-2013 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.bootstrap.actuate.autoconfigure;
import javax.servlet.Servlet;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.bootstrap.actuate.trace.InMemoryTraceRepository;
import org.springframework.bootstrap.actuate.trace.TraceRepository;
import org.springframework.bootstrap.actuate.trace.WebRequestLoggingFilter;
import org.springframework.bootstrap.context.annotation.ConditionalOnClass;
import org.springframework.bootstrap.context.annotation.ConditionalOnMissingBean;
import org.springframework.bootstrap.context.annotation.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
/**
* {@link EnableAutoConfiguration Auto-configuration} for /trace endpoint.
*
* @author Dave Syer
*/
@Configuration
public class TraceFilterConfiguration {
@Autowired(required = false)
private TraceRepository traceRepository = new InMemoryTraceRepository();
@Value("${management.dump_requests:false}")
private boolean dumpRequests;
@Bean
@ConditionalOnMissingBean(TraceRepository.class)
protected TraceRepository traceRepository() {
return this.traceRepository;
}
@Bean
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class })
public WebRequestLoggingFilter securityFilterPostProcessor(BeanFactory beanFactory) {
WebRequestLoggingFilter filter = new WebRequestLoggingFilter(this.traceRepository);
filter.setDumpRequests(this.dumpRequests);
return filter;
}
}

View File

@ -29,14 +29,14 @@ import org.springframework.web.bind.annotation.ResponseBody;
* @author Dave Syer
*/
@Controller
public class TraceEndpoint {
public class TraceEndpoints {
private TraceRepository tracer;
/**
* @param tracer
*/
public TraceEndpoint(TraceRepository tracer) {
public TraceEndpoints(TraceRepository tracer) {
super();
this.tracer = tracer;
}