java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'XXX'

标签 java spring tomcat

我一直在尝试在我的 tomcat 服务器上部署我的项目,但显然,每次我尝试启动服务器时,我的 catalina 日志中都会出现此错误:

Exception encountered during context initialization - cancelling refresh attempt
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'mnpTranslationServiceImpl' defined in URL [file:/opt/tomcat/webapps/axis2/WEB-INF/springjdbc.xml]: 
Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'mnpTranslationDAO' of bean class [com.e_horizon.jdbc.mnpTranslation.mnpTranslationServiceImpl]: 
Bean property 'mnpTranslationDAO' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

这是我命名为 springjdbc.xml 的 bean.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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">



<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://192.168.XX.X1:3306/msdp" />
    <property name="user" value="root" />
    <property name="password" value="ehorizon" />
    <property name="minPoolSize" value="1" />
    <property name="maxPoolSize" value="500" />
    <property name="numHelperThreads" value="5" />

    <property name="initialPoolSize" value="2" />
    <property name="autoCommitOnClose" value="true" />
    <property name="idleConnectionTestPeriod" value="60" />
    <property name="maxIdleTime" value="1200" />
    <property name="acquireRetryAttempts" value="2" />
</bean>

<bean id="dataSourceHD" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="com.mysql.jdbc.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://192.168.XX.X2:3306/hd" />
    <property name="user" value="teligent" />
    <property name="password" value="teligent" />
    <property name="minPoolSize" value="1" />
    <property name="maxPoolSize" value="500" />
    <property name="numHelperThreads" value="5" />

    <property name="initialPoolSize" value="2" />
    <property name="autoCommitOnClose" value="true" />
    <property name="idleConnectionTestPeriod" value="60" />
    <property name="maxIdleTime" value="1200" />
    <property name="acquireRetryAttempts" value="2" />
</bean>

<bean id="mpp2SubscribersDAO" class="com.e_horizon.jdbc.mpp2Subscriber.Mpp2SubscribersDAO">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
</bean>

<bean id="mpp2SubscribersService"
    class="com.e_horizon.jdbc.mpp2Subscriber.Mpp2SubscribersServiceImpl">
    <property name="mpp2SubscribersDAO">
        <ref bean="mpp2SubscribersDAO" />
    </property>
</bean>

<bean id="mnpTranslationDAO" class="com.e_horizon.jdbc.mnpTranslation.mnpTranslationDAO">
    <property name="dataSource">
        <ref bean="dataSourceHD" />
    </property>
</bean>

<bean id="mnpTranslationServiceImpl" class="com.e_horizon.jdbc.mnpTranslation.mnpTranslationServiceImpl">
    <property name="mnpTranslationDAO">
        <ref bean="mnpTranslationDAO" />
    </property> 
</bean>

`

这是错误提示不可写的 DAO 文件:

package com.e_horizon.jdbc.mnpTranslation;

import java.util.HashMap;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

import com.e_horizon.www.jdbc.common.BaseDAO;

public class mnpTranslationDAO extends BaseDAO {
    private SimpleJdbcInsert jdbcCall;

    public static String TABLE = "MNP_TRANSLATION";
    public static String FIELD_MSISDN = "msisdn";
    public static String FIELD_ROUTING_NUMBER = "routing_number";
    public static String FIELD_LAST_UPDATE = "last_update";
    public static String FIELD_ACTION = "action";

    protected RowMapper getObjectMapper () {
        return new mnpTranslationMapper();
    }

    public void save (mnpTranslation mnp) {
        this.jdbcCall = this.getSimpleJdbcInsert().withTableName(TABLE);
        Map<String, Object> parameters = new HashMap<String, Object>();

        parameters.put(FIELD_MSISDN, mnp.getMsisdn());
        parameters.put(FIELD_ROUTING_NUMBER, mnp.getRouting_number());
        parameters.put(FIELD_LAST_UPDATE, mnp.getLast_update());
        parameters.put(FIELD_ACTION, mnp.getAction());

        jdbcCall.execute(parameters);
    }
}

添加包含 setter 和 getter 的模型 (mnpTranslation.java):

package com.e_horizon.jdbc.mnpTranslation;

import java.sql.Timestamp;

public class mnpTranslation {
private String msisdn;
private String routing_number;
private Timestamp last_update;
private String action;

    public void setMsisdn (String msisdn) {
        this.msisdn = msisdn;
    }

    public String getMsisdn () {
        return this.msisdn;
    }

    public void setRouting_number (String routing_number) {
        this.routing_number = routing_number;
    }

    public String getRouting_number () {
        return this.routing_number;
    }

    public void setLast_update (Timestamp last_update) {
        this.last_update = last_update;
    }

    public Timestamp getLast_update () {
        return this.last_update;
    }

    public void setAction (String action) {
        this.action = action;
    }

    public String getAction () {
        return this.action;
    }
}

[edit] 我正在添加其余的 java 文件,以便您可以看到更多我现在正在处理的内容。非常感谢您检查这个。

mnpTranslationService.java:

package com.e_horizon.jdbc.mnpTranslation;

public abstract interface mnpTranslationService {
    public abstract void save (mnpTranslation mnp);
}

mnpTranslationServiceImpl.java:

package com.e_horizon.jdbc.mnpTranslation;

public class mnpTranslationServiceImpl {
    private mnpTranslationDAO mnpTranslationDAO;

    public void save (mnpTranslation mnp) {
        this.mnpTranslationDAO.save(mnp);
    }
}

mnpTranslationMapper.java:

package com.e_horizon.jdbc.mnpTranslation;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

public class mnpTranslationMapper implements RowMapper {
    public Object mapRow (ResultSet result, int dex) throws SQLException {
        mnpTranslation mnp = new mnpTranslation();

        mnp.setMsisdn(result.getString("msisdn"));
        mnp.setRouting_number(result.getString("routing_number"));
        mnp.setLast_update(result.getTimestamp("last_update"));
        mnp.setAction(result.getString("action"));

        return mnp;
    }
}

如果您还有其他需要查看的内容,请告诉我。我很乐意立即发布它。任何帮助将不胜感激。

最佳答案

错误消息表明问题出在您的 mnpTranslationServiceImpl 类上。

查看错误信息

Bean property 'mnpTranslationDAO' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

关于java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name 'XXX' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44773101/

相关文章:

sql - Oracle SQL 合并语句只有一个表和一堆值

java - 配置 AppContextListener 类的应用程序监听器时出错

java - 主题 : No bean named 'com.colors.themes.service.ColorLocalService' is defined 中的 Liferay 访问数据库表

tomcat - Apache Tomcat 6 启动问题

java - 嵌入式 Jetty 通过表单例份验证提供静态内容

java - Spring Boot 应用程序可以在调试器中运行,但不能作为 jar 运行

java - 在 Eclipse 中使用 get Thread Alsigned Bytes() 获取编译错误

java - 为什么依赖注入(inject)需要另一种语言?

java - 如何将Keycloak设置为Eclipse Hono的身份验证服务提供者(OIDC)?

java - 如何使用 spring,JPARepository 将多个条目插入到 postgres