Java 为什么Spring集成管理配置不支持';默认情况下不工作?

Java 为什么Spring集成管理配置不支持';默认情况下不工作?,java,spring,spring-integration,Java,Spring,Spring Integration,我正在研究新的Spring集成好处—集成管理配置,它是在java文档的基础上随4.2版本提供的 我已经编写了简单的基于java的上下文 /** *@作者尤金·斯捷潘年科夫 */ @配置 @使能集成 @启用集成管理 @IntegrationComponentScan(基本包={ “com.stepsoft.study.flow”, “com.stepsoft.study.configuration.flow”, “com.stepsoft.study.flow.messaging” }) @组件扫

我正在研究新的Spring集成好处—集成管理配置,它是在java文档的基础上随4.2版本提供的

我已经编写了简单的基于java的上下文

/**
*@作者尤金·斯捷潘年科夫
*/
@配置
@使能集成
@启用集成管理
@IntegrationComponentScan(基本包={
“com.stepsoft.study.flow”,
“com.stepsoft.study.configuration.flow”,
“com.stepsoft.study.flow.messaging”
})
@组件扫描(基本包={
“com.stepsoft.study.flow”,
“com.stepsoft.study.configuration.flow”,
“com.stepsoft.study.flow.messaging”
})
@进口({
DataContext.class,
ImportFlowContext.class
})
@PropertySource(“类路径:flow.properties”)
公共类流上下文{
@值(${flow.defaultPoller.fixedDelay}”)
私人固定时间;
@值(${flow.defaultPoller.maxMessagesPerPoll}”)
私有int-maxMessagesPerPoll;
@Bean(名称=默认轮询器)
公共PollerMetadata defaultPoller(){
PollerMetadata PollerMetadata=新PollerMetadata();
setTrigger(新周期触发器(固定延迟,毫秒));
pollerMetadata.setMaxMessagesPerPoll(maxMessagesPerPoll);
返回pollerMetadata;
}
}
执行上下文初始化时,I get
IllegalArgumentException enabledCountsPatterns不能为空

我在资料中找到了这个地方

/**
*为组件名称设置简单模式数组,消息计数将为其设置
*无法启用(默认为“*”)。
*启用邮件计数(`sendCount`、`errorCount`、`receiveCount`)
*用于支持计数器(通道、消息处理程序等)的组件。
*这只是初始设置,单个组件可以有计数
*在运行时启用/禁用。可能被中的条目覆盖
*{@link#setEnabledStatsPatterns(String[])enabledStatsPatterns}这是附加的
*简单计数的功能。如果模式以“!”开头,计数被禁用
*为了比赛。对于匹配多个模式的组件,第一个模式获胜。
*在运行时禁用计数也会禁用统计信息。
*@param启用了统计模式。
*/
public void setEnabledCountsPatterns(字符串[]enabledCountsPatterns){
Assert.notEmpty(enabledCountsPatterns,“enabledCountsPatterns不能为空”);
this.enabledCountsPatterns=Arrays.copyOf(enabledCountsPatterns,enabledCountsPatterns.length);
}
据我所知,此属性是从annotation
EnableIntegrationManagement

/**
*组件名称的简单模式列表,其中消息计数将为
*已启用(默认为“*”)。启用消息
*正在为以下组件计数(`sendCount`、`errorCount`、`receiveCount`)
*支持计数器(通道、消息处理程序等)。这是初始设置
*仅在运行时,单个组件可以启用/禁用计数。可能是
*被{@link#statsEnabled()statsEnabled}中的一个附加项覆盖
*简单计数的功能。如果模式以“!”开头,计数被禁用
*为了比赛。对于匹配多个模式的组件,第一个模式获胜。
*在运行时禁用计数也会禁用统计信息。
*默认为无组件,除非启用了JMX,在这种情况下,默认为所有组件
*组成部分。为匹配的bean名称重写{@link#defaultCountsEnabled()}。
*@返回模式。
*/
字符串[]countsEnabled()默认为“”;
但与此同时:

/**
*当bean名称与不匹配时启用计数的默认设置
*{@link#countsEnabled()countsEnabled}。
*@返回值;默认情况下为false,启用JMX时为true。
*/
字符串defaultCountsEnabled()默认为“false”;
所以我有两个误解:

  • 为什么在java文档中编写-
    (默认值为“*”)
    ,但默认值是注释中显示的
    '
  • 为什么没有逻辑来检查
    defaultCountsEnabled
    是否为真,然后检查
    countsEnabled
    属性
  • p.S.我不喜欢自己使用自定义注释或在现有注释中设置这些属性来提供默认值。更重要的是:在源代码的基础上,同样的想法与属性
    defaultStatsEnabled
    相关,与
    statsEnabled
    相关。同样在与
    metricsFactory
    相关的java文档中,如果省略了
    则使用DefaultMetricsFactory,但我似乎也会得到一个错误,很可能是
    NosuchbeandDefinitionException

    这是一个错误

    它固定在主机上(repo.spring.io/snapshots repo中的4.2.1.BUILD-SNAPSHOT);它将在我们计划下周发布的4.2.1.0版本中修复

    我们未能为默认注释添加测试(没有属性);否则我们早就发现了