java - Spring - 属性 'name' 不允许出现在元素 'constructor-arg' 中

标签 java eclipse spring maven

我在我的程序中使用 hsqldb 作为数据库。我想在 spring 中注入(inject)构造函数值。

这是我的 bean :

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

    <bean id="ConnectionManager" class="at.tuwien.group2.vpm.persistence.ConnectionManager"
        scope="singleton">
        <constructor-arg name="url" value="jdbc:hsqldb:file:vpmDatabasetest" />
        <constructor-arg name="user" value="sa" />
        <constructor-arg name="password" value="" />
    </bean>

我的构造函数看起来像这样:

public ConnectionManager(String url, String user, String password) {
    if(url == null || user == null || password == null) {
        throw new NullPointerException("Paramaeter cannot be null!");
    }
    this.url = url;
    this.user = user;
    this.password = password;
}

但是,当我想执行我得到的代码时:

属性“name”不允许出现在元素“constructor-arg”中

属性“name”不允许出现在元素“constructor-arg”中

我应该改用什么?

最佳答案

我猜你使用的是 Sping 2.x。使用 index 属性显式指定构造函数参数的索引:

   <bean id="ConnectionManager" ...>
        <constructor-arg index="0" value="jdbc:hsqldb:file:vpmDatabasetest" />
        <constructor-arg index="1" value="sa" />
        <constructor-arg index="2" value="" />
    </bean>

此外,从 Spring 3.0 开始,您还可以使用构造函数参数名称进行值消歧。

关于java - Spring - 属性 'name' 不允许出现在元素 'constructor-arg' 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13669798/

相关文章:

java - 如何使用 Java 流优雅地找到一个数字的质因数?

针对 JDK8 构建时,Java 应用程序 CPU/负载更高

eclipse - Eclipse Galileo 有可用的 Lua 插件吗?

java - 为什么变量不在页面上呈现?

javascript - 如何使用 JSON 端点?

java - 如何将 "plaintext"Java 源代码点以编程方式转换为 Python3 中的表情符号?

java - 贾夫、卢塞恩 : Search with numbers as String not working

java - 如何将本地项目连接到github仓库

java - SDN4 - 无法通过 id 列表找到ById

java - 在 Spring 中向单个服务注入(inject)多个实现