2017-10-18 76 views
0

我寫了一個樣本春天啓動的應用程序,它是無法與運行的消息確定的Spring bean不@Repository註解

` 說明: 場customerRepository在com.hibernatetutorial.service.CustomerServiceImpl所需的豆鍵入'com.hibernatetutorial.repository.CustomerRepository'找不到。

操作: 考慮定義類型「com.hibernatetutorial.repository.CustomerRepository」的豆你configuration.`

我有CustomerRepository類@Repository註解,它的包裝是在有基礎包掃描。

下面是配置

@SpringBootApplication 
@ComponentScan(basePackages="com.hibernatetutorial") 
public class HibernateTutorialApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(HibernateTutorialApplication.class, args); 

    } 

} 

@Repository 
@Transactional 
public interface CustomerRepository extends JpaRepository<Customer, UUID>{ 

} 

@Service 
@Transactional 
public class CustomerServiceImpl implements CustomerService { 

    @Autowired 
    private CustomerRepository customerRepository; 

    public Customer createCustomer(Customer customer) { 
     return customerRepository.save(customer); 
    } 

} 

客戶實體標註有@Entity。任何建議,如果我錯過了什麼

+0

您是否有手動指定@ComponentScan的原因?這些課程是不同的包裝? – dillius

+0

是的,他們是在他們各自的軟件包,如服務,存儲庫,模型等..我已經刪除componentscan並用SpringBootApplication(scanBasePackages = {「com.hibernatetutorial」})取代它,因爲SpringBootApplication也會照顧組件掃描,但仍然是錯誤是否 – arjun

+0

當您嘗試使用@EnableJpaRepositories時,是否指定了與組件掃描一樣的準確軟件包? – dillius

回答

1

要使用JpaRepository你需要添加以下到您的應用程序之一:

@EnableAutoConfiguration春季引導弄明白本身或

@EnableJpaRespositories(basePackageScan="com.example")自己指定它

For more information

+0

我試了兩次,但錯誤沒有消失。按照文檔「SpringBootApplication註釋相當於使用Configuration,EnableAutoConfiguration和ComponentScan及其默認屬性:」不確定是否還需要添加。 – arjun

+0

我的錯誤,我不得不這樣做,因爲我在最近的Spring應用程序中在SpringBootApplication本身之外指定了一個單獨的配置。 – dillius

0

請確認您CustomerRepository和CustomerServiceImpl Java文件是相同的packege com.hibernatetutorial下。

+0

它們不在同一個包中,但這就是爲什麼我將基本包掃描爲(scanBasePackages = {「com.hibernatetutorial」})。這裏com.hibernatetutorial是整個軟件包的一部分,假設它將掃描所有的軟件包並啓動com.hibernatetutorial – arjun

+0

@arjun Okkay.If這兩個文件都在基本軟件包com.hibernatetutorial下面。然後它應該與ComponentScan一起工​​作(「com.hibernatetutorial 。*「)標識。 – GaneshSreeju

+0

我意識到我必須添加*,但仍然無法正常工作,我試過(「com.hibernatetutorial。*」)。當我將EnableJpaRepository與基本包一起添加爲(「com.hibernatetutorial。*」)時,它正在工作。 – arjun