2017-07-18 108 views
1

我正在嘗試使用Spring 4來實現簡單的Web服務。但是我的userService似乎不起作用。Spring Data Rest Respository not found

我有這樣的配置:

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 
    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class<?>[]{ PersistenceConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class<?>[]{ 
     }; 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[]{"/api/*"}; 
    } 
} 

餘輝配置爲我的內存HSQLDB這樣的:

@Configuration 
@ComponentScan("example.userService") 
@PropertySource("classpath:hibernate.properties") 
@EnableJpaRepositories("example.userService.repo") 
public class PersistenceConfig { 

    @Autowired 
    Environment env; 

    @Bean 
    LocalContainerEntityManagerFactoryBean entityManagerFactory() { 
     /* ... */ 
     return entityManagerFactoryBean; 
    } 

    @Bean 
    public DataSource dataSource() { 
     return new EmbeddedDatabaseBuilder() 
       .setType(EmbeddedDatabaseType.HSQL) 
       .addScript("classpath:db/data.sql") 
       .build(); 
    } 
} 

我有一個實體User。這裏是我的存儲庫:

@Repository 
@RepositoryRestResource 
public interface UserRepo extends CrudRepository<User, Long> { 
    List<User> findAll(); 
    List<User> findByFirstName(@Param("firstName") String firstName); 
} 

而且我也有na嵌入碼頭9999端口來運行此服務。

而當碼頭開始,我去localhost:9999/api/users//user/1或不喜歡那樣,404錯誤發生。 findByFirstName方法也不起作用。

我認爲這是因爲Servlet Dispatcher不知道我公開的存儲庫。但我也不知道如何「註冊」它,因爲我不想使用控制器

我已閱讀春天文檔herehere和另一個教程,但他們大多不提供任何CONFIGS和描述信息庫是只是剛工作

有什麼建議我可以用它做什麼以及什麼會導致這個問題,因爲在控制檯中沒有顯示任何東西,並且在編譯時一切正常工作?

在此先感謝!

UPD 1: 我根據Accessing JPA Data with REST/api/users@RepositoryRestResource加入到UesrRepo仍然是404

UPD 2: 我已經通過,因爲它去除它的服務部分的簡化的問題根據@ Antoniossss的評論需要控制器。不是這麼簡單:我應該使用哪種配置(如果有的話)來公開倉庫?

+0

我沒有看到實施/ users或/ users/1端點的控制器 – chomnoue

+0

@chomnoue存儲庫是否通過其名稱公開?我的意思是UserRepository應暴露於'/ users'或'/ user /'(但不是直接暴露它們的最佳做法)。我想使用它們,但沒有控制器和服務。這是不可能的嗎? –

+0

如果您想將存儲庫公開爲其他資源,則需要@RepositoryRestResource。 https://spring.io/guides/gs/accessing-data-rest/ – chomnoue

回答

0

看起來你錯過了Spring data rest configuration並且只有MVC配置。您需要將Bean RepositoryRestConfigurer添加到您的配置中,或者擴展RepositoryRestConfigurerAdapter。