我下面這個教程來測試實現它到我的項目之前休眠:http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/從擴展CrudRepository <Class,ID>的接口創建一個bean?
我的問題是,該指令要求的UserDAO是一個bean:
@Autowired
private UserDao userDao;
它是不是... ?我覺得我錯過了這個網站提供的例子中非常重要的一些東西。我習慣於使用implements Serializable
來實現bean,但在此場景中不使用它。它應該如何被視爲一個bean?
如果有人能向我解釋我缺少什麼,我將非常感激。這種實現CRUD的方式,更多的只使用接口和標準方式來聲明函數看起來非常有吸引力。謝謝!
編輯:下面是我的代碼。當我嘗試將它集成到我的項目中時,由於項目體系結構的差異(這是我的猜測),隨本教程提供的代碼不起作用。
Application.java
@SpringBootApplication
@ComponentScan("boot")
@ComponentScan("dao")
@ComponentScan("modele")
@EnableJpaRepositories("org.utc.ai15")
public class Application {
public static void main (String[] args){
SpringApplication.run(Application.class, args);
}
}
TestDAO.java
@Transactional
@Component
public interface TestDAO extends CrudRepository<Test, Long > {
/**
* This method will find an User instance in the database by its email.
* Note that this method is not implemented and its working code will be
* automagically generated from its signature by Spring Data JPA.
*/
public Test findByEmail(String email);
}
我認爲這是參與這個問題的一切。
我試圖添加@Component
到TestDAO.java因此它與@ComponentScan("dao")
掃描,但它不工作。
這裏的錯誤:
Field testDao in boot.controller.TestController required a bean of type 'dao.TestDAO' that could not be found.
編輯2:錯誤是@EnableJpaRepositories("org.utc.ai15")
,準確的申報是@EnableJpaRepositories("dao")
(CF @Alex答案)。
userDao是一個「存儲庫」bean。也許你應該閱讀Spring Data JPA文檔? https://docs.spring.io/spring-data/jpa/docs/current/reference/html。 – alexbt
你的教程提到了這一點:「使用Spring Data JPA,你的實體的DAO只需通過擴展Spring提供的CrudRepository接口來創建」。簡而言之,Spring Data只需創建一個接口即可爲您提供即用型存儲庫。然後你可以注入它作爲一個bean並使用保存/刪除/查找方法... – alexbt
感謝您的答覆。我更瞭解發生了什麼事情。但是我仍然無法創建UserDAO的bean。它只是不被認爲是一個bean。我已使用@EnableJpaRepositories進行了註釋,隨後的教程與文檔中定義的步驟相同。你有什麼想法可能會出錯?我明天會發布我的代碼示例,但它的UserDAO是相同的。 – Chuck