找不到Spring Data Rest Respository

时间:2017-07-18 12:54:47

标签: java spring spring-data-jpa spring-data-rest

我正在尝试使用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

我已阅读春季文档herehere和其他教程,但其中大多数都没有提供任何配置并描述只是工作的存储库。

关于我可以用它做什么以及什么可能导致这个问题的任何建议,因为在控制台和编译时没有显示一切正常工作?

提前致谢!

UPD 1: 我已根据Accessing JPA Data with REST@RepositoryRestResource添加到UesrRepo,但/api/users仍为404。

UPD 2: 我通过删除服务部分来简化问题,因为它需要控制器根据@Antoniossss的评论。不就是这么简单:我应该使用哪种配置(如果有的话)来公开存储库?

1 个答案:

答案 0 :(得分:0)

看起来你错过了Spring data rest configuration并且只有MVC配置。您需要将bean RepositoryRestConfigurer添加到您的配置中或扩展RepositoryRestConfigurerAdapter。