我正在尝试使用Spring 4实现简单的Web服务。但我的userService似乎不起作用。
我的配置如下:
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的Persistence配置,如下所示:
@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);
}
我在端口9999上也有na嵌入式码头来运行这项服务。
当码头开始并且我转到localhost:9999/api/users/
或/user/1
或者像那样时,会发生错误404。 findByFirstName
方法也不起作用。
我认为这是因为Servlet Dispatcher不了解我公开的存储库。但我也不知道如何“注册”它,因为我不想使用 controller 。
我已阅读春季文档here,here和其他教程,但其中大多数都没有提供任何配置并描述只是工作的存储库。
关于我可以用它做什么以及什么可能导致这个问题的任何建议,因为在控制台和编译时没有显示一切正常工作?
提前致谢!
UPD 1:
我已根据Accessing JPA Data with REST将@RepositoryRestResource
添加到UesrRepo
,但/api/users
仍为404。
UPD 2: 我通过删除服务部分来简化问题,因为它需要控制器根据@Antoniossss的评论。不就是这么简单:我应该使用哪种配置(如果有的话)来公开存储库?
答案 0 :(得分:0)
看起来你错过了Spring data rest configuration并且只有MVC配置。您需要将bean RepositoryRestConfigurer添加到您的配置中或扩展RepositoryRestConfigurerAdapter。