Java Spring : getting error "Unknown property sub-element: <util:constant>"

标签 java spring

我尝试使用 ioc 的 util:constant 标记,但收到以下错误消息:

Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'threadPoolExecutor' defined in class path resource [spring.xml]: Unknown property sub-element: <util:constant>

这是我的 xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
 http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util-3.1.xsd">


<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath:config.properties</value>
    </property>
</bean>

<bean id="main" class="pikefin.Main">
<property name="executorSample" ref="executorSample"/>
</bean>


<bean id="executorSample" class="pikefin.ExecutorSample">
    <constructor-arg ref="threadPoolExecutor" />

</bean>


<bean id="threadPoolExecutor" class="java.util.concurrent.ThreadPoolExecutor">
    <constructor-arg index="0" value="2"/>
    <constructor-arg index="1" value="2"/>
    <constructor-arg index="2" value="10"/>
    <constructor-arg index="3"><util:constant static-field="java.util.concurrent.TimeUnit.SECONDS"/></constructor-arg>
    <constructor-arg index="4" ref="arrayBlockingPool"/>
</bean>

<bean id="arrayBlockingPool" class="java.util.concurrent.ArrayBlockingQueue">
    <constructor-arg value="5"/>
</bean>

</beans>

更新:

这是我的 xml,其中包含 <value>添加的标记会导致不同的错误消息:

Invalid content was found starting with element 'util:constant'. No child element is expected at this point.

(旁注:由于某种原因,我的格式控件在 SO 中发布时消失了)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
 http://www.springframework.org/schema/util  http://www.springframework.org/schema/util/spring-util-3.1.xsd">


<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <value>classpath:config.properties</value>
    </property>
</bean>

<bean id="main" class="pikefin.Main">
<property name="executorSample" ref="executorSample"/>
</bean>


<bean id="executorSample" class="pikefin.ExecutorSample">
    <constructor-arg ref="threadPoolExecutor" />

</bean>


<bean id="threadPoolExecutor" class="java.util.concurrent.ThreadPoolExecutor">
    <constructor-arg index="0" value="2"/>
    <constructor-arg index="1" value="2"/>
    <constructor-arg index="2" value="10"/>
    <constructor-arg index="3">
        <value>
            <util:constant static-field="java.util.concurrent.TimeUnit.SECONDS"/>
        </value>
    </constructor-arg>
    <constructor-arg index="4" ref="arrayBlockingPool"/>
</bean>

<bean id="arrayBlockingPool" class="java.util.concurrent.ArrayBlockingQueue">
    <constructor-arg value="5"/>
</bean>

</beans>

最佳答案

对于枚举,您可以直接分配值,Spring 将负责将其绑定(bind)到正确的枚举:

<constructor-arg index="3" value="SECONDS">

此外,您的原始条目非常适合我:

<bean id="threadPoolExecutor" class="java.util.concurrent.ThreadPoolExecutor">
    <constructor-arg index="0" value="2"/>
    <constructor-arg index="1" value="2"/>
    <constructor-arg index="2" value="10"/>
    <constructor-arg index="3"><util:constant static-field="java.util.concurrent.TimeUnit.SECONDS"/></constructor-arg>
    <constructor-arg index="4" ref="arrayBlockingPool"/>
</bean> 

关于Java Spring : getting error "Unknown property sub-element: <util:constant>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10523535/

相关文章:

java - Elasticsearch无节点可用异常

java - 使用 RequestMapping 和 fromUriString 从浏览器进行 http 调用中的任意输入参数

java - Zk Spring CustomComponent 引用 bean

java - 从 spring Controller 类中的 jsp 检索多个复选框值

Spring Boot - 在 Hibernate 中使用 JPA 存储库

java - 返回动态语言用户的基本 Java 库和实用程序是什么?

java - 地理围栏 : GoogleApiClient is not connected yet

java - 为什么结果没有进入 Spring Data 应用程序

java - 创建 jar 文件后出现 NoClassDefFoundError 异常

java - JUnit、@ControllerAdvice 以及 Kotlin 中缺乏检查异常