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 將數據源自動連接到您的控制器中(例如,通過構造函數或字段注入)。
希望這可以幫助
添加回答
舉報