Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 结合Spring MVC 3.2和Coda Hales度量_Java_Spring_Servlets_Spring Mvc_Metrics - Fatal编程技术网

Java 结合Spring MVC 3.2和Coda Hales度量

Java 结合Spring MVC 3.2和Coda Hales度量,java,spring,servlets,spring-mvc,metrics,Java,Spring,Servlets,Spring Mvc,Metrics,我正在尝试将SpringWeb应用程序(完整的基于注释的配置,noxml配置)与metrics 3.0相结合 我正在码头内运行应用程序 这是默认DispatcherServlet的当前配置: public class WebInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { @Override protected Class<?>[] getRootCon

我正在尝试将SpringWeb应用程序(完整的基于注释的配置,noxml配置)与metrics 3.0相结合

我正在码头内运行应用程序

这是默认DispatcherServlet的当前配置:

public class WebInitializer extends
        AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return new Filter[] { characterEncodingFilter };
    }

}
公共类WebInitializer扩展
AbstractAnnotationConfigDispatchersServletInitializer{
@凌驾
受保护类[]getRootConfigClasses(){
返回null;
}
@凌驾
受保护类[]getServletConfigClasses(){
返回新类[]{WebConfig.Class};
}
@凌驾
受保护的字符串[]getServletMappings(){
返回新字符串[]{”/“};
}
@凌驾
受保护的筛选器[]getServletFilters(){
CharacterEncodingFilter CharacterEncodingFilter=新的CharacterEncodingFilter();
characterEncodingFilter.setEncoding(“UTF-8”);
返回新筛选器[]{characterEncodingFilter};
}
}
这是网络配置:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.rebuy.silo.amqpredelivery")
@EnableJpaRepositories(basePackages = "com.rebuy.silo.amqpredelivery.domain")
@EnableAspectJAutoProxy
@EnableTransactionManagement
public class WebConfig extends WebMvcConfigurerAdapter {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

    @Override
    public void configureMessageConverters(
            List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter jacksonConverter = new MappingJackson2HttpMessageConverter();
        jacksonConverter.setObjectMapper(objectMapper());
        converters.add(jacksonConverter);
        super.configureMessageConverters(converters);
    }

    @Bean
    public ObjectMapper objectMapper() {
        SimpleDateFormat format = new SimpleDateFormat(
                "yyyy-MM-dd'T'HH:mm:ssXXX");
        format.setTimeZone(TimeZone.getTimeZone("GMT+1"));
        ObjectMapper mapper = new ObjectMapper();
        mapper.setDateFormat(format);
        return mapper;
    }
}
@配置
@EnableWebMvc
@组件扫描(basePackages=“com.rebuy.silo.amqpredelivery”)
@EnableJpaRepositories(basePackages=“com.rebuy.silo.amqpredelivery.domain”)
@促性腺激素
@启用事务管理
公共类WebConfig扩展了WebMVCConfigureAdapter{
@豆子
公共静态属性资源占位符配置器属性资源占位符配置器(){
返回新属性资源占位符配置器();
}
@凌驾
公共无效配置MessageConverters(

List您可以遵循此代码库


或者使用这个名为metrics spring的库看看下面的答案。它解释了如何通过JavaConfig注册Servlet:


如果您使用的是Spring和Metrics,那么您也应该使用@Ryanteney的Metrics Spring模块。它将简化Java配置,并使您的指标使用更加干净

看一看MetricsServlet和HealthCheckServlet背后的代码,我认为编写自己的Spring控制器来做同样的事情比找出如何嵌入和包装那些旧的servlet更容易

很简单

创建特定于度量的配置:

@Configuration
@EnableMetrics
public class MetricsConfig extends MetricsConfigurerAdapter {
    @Override
    public void configureReporters(MetricRegistry metricRegistry) {
        registerReporter(ConsoleReporter
            .forRegistry(metricRegistry)
            .build()).start(5, TimeUnit.MINUTES);
    }
}
并通过添加以下内容从现有配置中包括:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.rebuy.silo.amqpredelivery")
@EnableJpaRepositories(basePackages = "com.rebuy.silo.amqpredelivery.domain")
@EnableAspectJAutoProxy
@EnableTransactionManagement
@Import({MetricsConfig.class})
public class WebConfig extends WebMvcConfigurerAdapter {
...
上述配置更改使得在任何Spring组件中注入MetricRegistry变得微不足道。MetricsServlet所做的只是发送注册表以响应请求。这在一个简单的控制器中很容易实现。例如:

@Controller
public class AdminMetricsController
{
    @Autowired
    MetricRegistry metricRegistry;

    @RequestMapping(value = "/admin/metrics/", produces = {APPLICATION_JSON_VALUE})
    public @ResponseBody MetricRegistry getMetrics(final HttpServletResponse response)
    {
        response.setHeader("Cache-Control", "must-revalidate,no-cache,no-store");
        return metricRegistry;
    }

}

HealthCheckRegistry可以以类似的方式注入,并添加另一种方法,该方法将响应/admin/health/或您想要的任何url。

metrics spring仍处于RC阶段。我提到我没有使用web.xml或基于xml的配置。因此您的示例对我没有帮助。True。我认为这可能会有所帮助:(该项目已退出RC,现在包含注释配置。