[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]
pull/1/merge
Dave Syer 12 years ago
parent ceab9b9b33
commit a0e51d06ea

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

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

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

@ -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;
}
}

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