【发布时间】:2013-07-23 02:05:43
【问题描述】:
这可能是一个非常新手的问题,但我已经搜索过,要么我的理解存在很大差距,要么我做错了我无法弄清楚的事情。
在我的上下文文件中,这是一段摘录
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${datasource.driverClassName}" />
<property name="url" value="${datasource.url}" />
<property name="username" value="${datasource.username}" />
<property name="password" value="${datasource.password}" />
</bean>
<bean id="myBeanOne" class="a.b.c.myBeanOne">
<property name="dataSource" ref="dataSource" />
</bean>
现在在 myBeanOne 我有:
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
@Autowired
public void setDataSource (DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public void myMethod() {
String sql = "'My generic SQL update query'";
try {
this.jdbcTemplate.update(sql);
} catch (org.springframework.dao.EmptyResultDataAccessException ex) {
}
System.exit(0);
}
当我尝试在调用 setDataSource 的行上执行此操作时,我收到此错误:
ERROR org.springframework.integration.handler.LoggingHandler
org.springframework.integration.MessageHandlingException:
java.lang.NullPointerException
在线:this.jdbcTemplate.update(sql);
我已经尝试了十种不同的配置来让它工作,但我似乎做不到。感谢您提供任何帮助,谢谢。
编辑:根据 Luiggi 的评论:
//in yet another classes run method
myBeanOne bOne = SomeOtherClass.create(); //just returns new myBeanOne
bOne.myMethod();
SomeOtherClass 或此类在上下文中均未分类为 bean,也不存在于上下文中。
我知道这是一个非常基本的问题,但我正在努力解决它。
感谢您的耐心等待。
【问题讨论】:
-
你错过了主要问题:你怎么打电话给
MyBeanOne#myMethod? -
正在从另一个类(不在上下文文件中)调用它。
-
检查是否在堆栈跟踪中看到任何错误,如果未建立数据库连接,则会发生这种情况。除此之外,我没有看到代码问题。
-
@Phani 错误是
NullPointerException(再读一遍问题)。 -
在你使用这个
MyBeanOne实例的地方添加代码,可能是你没有正确使用它或自己初始化它,从而在myMethod中使用jdbcTemplate变量时得到NPE。跨度>
标签: java spring jdbc autowired