spring - jdbcTemplate.update 中的 java.lang.NullPointerException
问题描述
当我试图在我的数据库中插入数据时,我有一个 java.lang.NullPointerException。
这是我的配置 Spring 和我的代码:
应用程序上下文.xml:
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/userDb"/>
</bean>
<bean class="com.example.UserDB" id="user">
<property name="dataSource" ref="myDataSource"/
用户数据库.java:
public class UserAccountLog {
protected JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
jdbcTemplate = new JdbcTemplate(dataSource);
}
public void insertNewUser(String username){
jdbcTemplate.update( connection -> {
PreparedStatement ps = connection.prepareStatement(sqlUserInsert, new String[]{"id"});
int i =1;
ps.setString(i++, username);
return ps;});
}
}
当他尝试这样做时,我遇到了这个错误jdbcTemplate.update( connection
:
java.lang.NullPointerException
at com.example.UserDB.insertNewUser
我已经尝试在变量 Jdbc 中创建 @Autowired 注释,但也不起作用,
请问有人有想法吗?
解决方案
DI 仅适用于容器管理的对象。如果要通过容器自动装配 UserDB 中的 jdbcTamplate 字段,则必须将容器带入游戏。@Autowire UserDB userDB;
您必须通过容器(或UserDB userDB = context.getBean(UserDB);
)而不是“手动”(UserBd userDB = new UserDB();
)创建 UserDB 类实例
推荐阅读
- vue.js - 如何将两个v-html合二为一
- java - 尝试使用 AnchorPane 的扩展版本时的实例化和加载异常
- python - 在单元测试中使用 pandas 时的详细日志
- java - 如果我分配了错误的异常,最糟糕的情况是什么?
- git - 无法通过 SSH 连接到 GitHub(但可以连接到 GitLab)
- sorting - 如何推导出冒泡排序比较公式?
- javascript - Strapi Upload Plugin:如何在 cron 作业中上传远程文件
- python - 将 numpy.fromiter 与自定义函数一起使用
- elixir - 错误:运行 mix phoenix.server 时未定义的函数 user/2
- snowflake-cloud-data-platform - 是否可以使用 SQL 访问用户和角色信息?SHOW USERS 数据存储在哪里?