spring - Spring:JDBCTemplate 没有正确注入
问题描述
好像我在我的 Spring 项目中遇到了其他死胡同,我希望这里有人可以帮助我。
我的项目结构如下:项目结构
我的代码:
图书控制器
@Controller
public class BookController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String getBookData(Book book, ModelMap model) {
model.put("data", book.getBooks());
return "BookView";
}
}
书
@Component
public class Book {
private JdbcTemplate jdbcTemplate;
private String title;
private String author;
private String isbn;
public Book() {
}
@Autowired
public Book(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public ModelMap getBooks() {
ModelMap model = new ModelMap();
String sql = "SELECT * FROM Books";
model.put("data", jdbcTemplate.queryForList(sql));
return model;
}
}
应用配置
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"models", "controllers"})
public class AppConfig {
@Bean
public DriverManagerDataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/onlinelibrary");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
尝试在 Book getBooks() 方法中访问 jdbcTemplate 时出现空指针异常。这本质上就像依赖注入根本不起作用。
提前感谢您的帮助!
解决方案
请在 Book 中使用 @Autowired,以便 Spring 可以注入实际的 Object。
@Component
public class Book {
@Autowired
private JdbcTemplate jdbcTemplate;
}
推荐阅读
- python - Pandas 布尔索引以比较 DataFrame 和字典列表中的结果
- git - 双向合并 git 分支时跳过文件
- php - mysql PDO存储过程调用在php页面上执行失败
- javascript - net::ERR_FAILED 加载本地 .json 文件时?
- node.js - 如何在nodejs中制作视频以指定质量流式传输?
- javascript - 解决在 IE8 上运行 javascript reduce() 方法的兼容性问题
- javascript - 为什么这段代码会给出未定义的错误?firebase 云功能
- r - R:从数据中创建指标变量并提取类别
- python - 为什么我的函数中的参数不起作用?
- r - 更改必应词典中单词的值