gpt4 book ai didi

具有静态setter函数的java bean

转载 作者:行者123 更新时间:2023-11-28 21:55:00 26 4
gpt4 key购买 nike

我有一个在 tomcat 6 上执行的 Web 应用程序。

我有一个 MysqlDb 类,它使用来自 spring JDBC 的 BasicDataSource。

到目前为止,我在 web.xml 中使用了以下 bean 配置:

<bean id="MysqlDb" class="com.xpogames.gamesisland.mysql.MysqlDb">
<property name="idDataSource" ref="idDataSource"/>
</bean>

我有以下 setter 函数:

  public void setidDataSource(BasicDataSource ds) {
this._dataSource=(DataSource)ds;
this._simpleJdbcTemplate = new SimpleJdbcTemplate(_dataSource);
this._jdbcTemplate = new JdbcTemplate(_dataSource);
}

我想将我的类转换为使用静态函数,因此我创建了一个空的私有(private)构造函数,这样该类就不会被调用者显式实例化。

除此之外,我将 setidDataSource 函数更改为静态函数,但是当我尝试这样做时,出现以下错误:

Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'idDataSource' of bean class [com.xpogames.gamesisland.mysql.MysqlDb]: Bean property 'idDataSource' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

有没有办法在 web.xml 中解决这个问题,还是我需要手动获取 ServletContext

ServletContext servletContext = this.getServletContext();
this._context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

然后从那里获取 bean,然后从 web.xml 中删除我在此处打印的行?

最佳答案

首先,您已经声明了 setter setidDataSource。它应该是 setIdDataSource。属性的第一个字母必须是单词 set 之后的大写字母。

此外,setter 方法不能是静态方法,而是实例方法。

关于具有静态setter函数的java bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6437605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com