Bean Creation异常:加载xml时无法解析匹配的构造函数

时间:2016-12-01 16:36:44

标签: java xml spring maven spring-mvc

我试图在这个类中使用TempStatusClass调用大型机存储过程我正在加载status-dao.xml,它定义了数据源定义和存储过程。当我尝试调用它时,我得到以下异常org.springframework.beans.factory.BeanCreationException:创建名称为' testProcedure'的bean时出错。在类路径资源[status-dao.xml]中定义:无法解析匹配的构造函数(提示:为简单参数指定索引/类型/名称参数以避免类型歧义)。

不确定是什么原因造成的。任何帮助都非常感谢。

@TempStatusClass
public class TempStatusClass implements DataServiceIF{

    @Override
    public Object execute(Object param) throws AppException {
        StatusUpdateVO input = new StatusUpdateVO();
        input.setShipment("X3328332842");
        Map dataMap = null;

        String springConfig = "status-dao.xml";
        ApplicationContext context =new ClassPathXmlApplicationContext(springConfig);
        StatusUpdateImpl statusUpdate = (StatusUpdateImpl) context.getBean("statusUpdateDao");

        try {
             dataMap = statusUpdate.getData(input);
        } catch (StatusUpdateDAOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return dataMap;
    }
}

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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context 
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/util      
        http://www.springframework.org/schema/util/spring-util.xsd">

    <context:component-scan base-package="com.ops.test.test.*" />


    <!-- Step 1: Define the data source -->
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="jdbc/MAINEFRAME" />
    </bean>

    <!-- Step 2: Define JDBC template -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- Step 3: Define Stored Procedures -->
    <bean id="testProcedure"
        class="com.ops.test.test.sp.StatusUpdateStoredProcedure">
        <constructor-arg>
            <ref bean="jdbcTemplate" />
        </constructor-arg>
        <constructor-arg value="D472J00.N472RPTL" />
    </bean>

    <!-- Step 4: Define the DAOs -->
    <bean id="statusUpdateDao"
        class="com.ops.test.test.dao.impl.StatusUpdateImpl">
        <property name="dataSource" ref="dataSource" />
        <property name="procedure" ref="testProcedure" />
    </bean>

</beans>

默认地将Impl

public class StatusUpdateImpl extends JdbcDaoSupport implements StatusUpdateDao{

    /** The data source. */
    private DataSource dataSource;

    /** The stored procedure. */
    private StatusUpdateDao storedProcedure;

    /** The jdbc template object. */
    @Autowired
    private JdbcTemplate jdbcTemplateObject;

    public StatusUpdateImpl()
    {

    }

    @Autowired
    public StatusUpdateImpl(DataSource dataSource) {
        setDataSource(dataSource);
        JdbcTemplate jdbcTemplate = getJdbcTemplate();
    }
    public void setStoredProcedure(StatusUpdateDao storedProcedure)
    {
        this.storedProcedure = storedProcedure;
    }


    public Map getData(Object input) throws StatusUpdateDAOException {
        Map data = storedProcedure.getData(input);

        return data;
    }
}

1 个答案:

答案 0 :(得分:0)

您使用的是spring-data-commons RC1版本吗?我有同样的问题,它开始与此依赖项的版本凹凸。我也在spring的jira上创建了一个问题: https://jira.spring.io/browse/DATASOLR-348