我正在嘗試使用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不知道我公開的存儲庫。但我也不知道如何「註冊」它,因爲我不想使用控制器。
我已閱讀春天文檔here,here和另一個教程,但他們大多不提供任何CONFIGS和描述信息庫是只是剛工作。
有什麼建議我可以用它做什麼以及什麼會導致這個問題,因爲在控制檯中沒有顯示任何東西,並且在編譯時一切正常工作?
在此先感謝!
UPD 1: 我根據Accessing JPA Data with REST但/api/users
@RepositoryRestResource
加入到UesrRepo
仍然是404
UPD 2: 我已經通過,因爲它去除它的服務部分的簡化的問題根據@ Antoniossss的評論需要控制器。不是這麼簡單:我應該使用哪種配置(如果有的話)來公開倉庫?
我沒有看到實施/ users或/ users/1端點的控制器 – chomnoue
@chomnoue存儲庫是否通過其名稱公開?我的意思是UserRepository應暴露於'/ users'或'/ user /'(但不是直接暴露它們的最佳做法)。我想使用它們,但沒有控制器和服務。這是不可能的嗎? –
如果您想將存儲庫公開爲其他資源,則需要@RepositoryRestResource。 https://spring.io/guides/gs/accessing-data-rest/ – chomnoue