2 回答
TA贡献1840条经验 获得超5个赞
可以看到的错误是你错过了 DbManager.class 上的 @Configuration 注解
我想指出的另一件事是“setDs”方法,你不需要这个,因为这基本上是@Autowired 正在做的,这也是你的下一个错误,你必须使用 @Autowired 从 spring 获取 DbManager 的实例.
@Autowired
private DataSource dbMan;
@RequestMapping("/check")
public ModelAndView greet() throws SQLException {
//DbManager dbMan = new DbManager();
if (dbMan.conn() != null) {
return new ModelAndView("welcome", "msg", "SUCCESS");
} else {
return new ModelAndView("welcome", "msg", "FAIL");
}
}
如果您的连接仍然没有装箱,请确保。
DbManager.class 是否在您在 @ComponentScan 注释中给出的包中。
TA贡献1831条经验 获得超9个赞
当您自己实例化 DbManager 时,spring 无法拦截并为您自动装配。因此数据源将为空。
要解决此问题:
首先给 DbManager 添加一个 @Configuration 注解——然后 Spring 会自动将它识别为一个 bean 工厂并为你实例化它。(在执行此操作时,您可能会首先看到错误,因为 DbManager 会尝试自动装配它自己创建的 bean。只需从类中删除 @Autowired 并完全删除对数据源的引用。
让 Spring 将数据源自动连接到您的控制器中(例如,通过构造函数或字段注入)。
希望这可以帮助
添加回答
举报