簡體   English   中英

Spring 啟動 web java 配置不起作用

[英]Spring boot web java configuration not working

I'm just starting off with Spring, I have created a basic Spring boot web app with - Thymeleaf templates, JPA and Mysql.

當我使用自動裝配並注釋所有類時,一切正常。 這是工作代碼的示例。

帶有@Component 注釋的簡單產品 class
帶有@Component 注解的簡單產品類

帶有 @service 注釋的簡單 DAO class
帶有 @service 注釋的簡單 DAO 類

基本 controller 帶有 @Autowired 注釋以獲取 DAO 實例
帶有@Autowired注解的基本控制器來獲取DAO實例

因此,當我調用 get 方法時,我可以看到產品列表:顯示 2 個產品
2個產品展示

現在,當我轉換到 java 配置時,它停止工作。 我注釋掉了注釋並添加了一個新的 java 配置文件。

@Autowiring 注釋也從 Controller 中刪除

添加了帶有 @Configuration 的 java class,請參閱配置文件:
配置文件

為了確保上下文加載了 bean,我采用了 run 方法返回的可配置上下文並檢查了 bean 是否已加載。

獲取DAO bean並調用獲取Product line items的方法
獲取DAO bean並調用獲取Product line items的方法

這也有效,因為我可以看到 object 不是 null。 我還可以在應用程序啟動后立即獲得 output 中的產品數量。

直到這里一切都很好,應用程序已經啟動。 但是現在當我訪問 URL - 我得到一個錯誤

總結這個例子只是為了理解 Spring 而不是遵循正確的 DDD 實踐。

這是步驟的摘要,問題在步驟 4(b)

  1. DAO 創建 2 個 Product 實例,放入一個列表並返回它。
  2. DAO 被注入到 controller 中。 controller 調用 DAO 上的 getproducts() 並返回產品列表。
  3. 一切都與組件和服務注釋結合使用@Autowireing
  4. 當我使用 Java 配置時,問題就來了。 (a) 應用程序啟動后,我獲取上下文並驗證 bean 是否已加載。 (我在主應用程序中執行此操作。) (b) 只有當我點擊 url 並且 controller 嘗試調用 DAO 上的方法時,我才會遇到問題。

HomeController聲明一個構造函數,如下所示

@Controller
public class HomeController{

   private final ProductDao dao;

    public HomeController(ProductDao dao){
       this.dao = dao;
    }
 
  //... rest of the code
}

參考:Spring 引導參考文檔 - Spring Beans 和依賴注入

如果一個 bean 有一個構造函數,你可以省略 @Autowired

注意:共享實際代碼而不是圖像以供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM