当前位置: 首页 > 知识库问答 >
问题:

未找到Spring数据Rest响应

杨雪松
2023-03-14

我试图使用Spring 4实现简单的Web服务。但是我的用户服务似乎不起作用。

我有如下配置:

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();
    }
}

我有一个实体用户。这是我的存储库:

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

我还在9999端口上安装了一个嵌入式jetty来运行这项服务。

当jetty启动时,我转到localhost:9999/api/users//user/1或类似的smth,就会出现错误404findByFirstName方法也不起作用。

我认为这是因为Servlet Dispatcher不知道我公开的存储库。但我也不知道如何“注册”,因为我不想使用控制器。

我在这里、这里和其他教程中都读过spring文档,但其中大多数都没有提供任何配置,也没有描述只起作用的存储库。

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

提前感谢!

UPD 1:我已经根据使用REST访问JPA数据将@RepositoryRestResources添加到UesrRepo,但是/api/用户仍然是404。

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

共有1个答案

王兴腾
2023-03-14

看起来您错过了Spring数据rest配置,只有MVC配置。您需要将bean RepositoryRestConfigurer添加到配置中或扩展RepositoryRestConfigurerAdapter。

 类似资料:
  • 我用Spring 4和Spring security设置了一个简单的REST API web.xml AccountController.java mysabisabi-servlet.xml mysabisabi-security.xml 应用程序上下文.xml 日志文件 当我尝试访问 我得到 我已经尝试了 和作为url模式,但仍然相同。 有人能指出我错过了什么吗? 谢了。

  • 我得到这个例外 组织。springframework。网状物客户RestClientException:无法提取响应:未找到响应类型[AnalyticsResponse]和内容类型[application/json;charset=UTF-8]的合适HttpMessageConverter 仅在我的junit测试用例中(Restendpoint可以正常工作),如果我的DTO包含一个以用户定义的类作

  • 正如标题所说,当我将spring数据rest存储库添加到现有的spring数据rest webmvc项目中时,我开始在项目运行中出错。 我试图使用@ConvertBy(MyConverter.class)在实体中遵循此链接进行嵌入ID转换。然而,仅仅添加jar就会导致以下错误和大量o. s. c. i. s. PathMatchingResourcePatterResolver日志。

  • 当我尝试使用以下命令将数据发布到我的REST API(使用Spring DATA JPA REST创建)时: 我得到这个错误:

  • 我试图用jqGrid解决Spring Data Rest的问题,所有的事情都很好,除了我想要将对象全部作为序列化返回,所以在ManyToOne关系中,我现在只得到该对象的链接,而我想要将它序列化。 如您所见,中的accountManager类返回为link,但我希望它也被序列化,以便在JQGrid中显示Name属性。 向Shahbour问好

  • 我是Spring Data JPA的新手。我试图为存储库创建一个自定义方法,但是它确实抛出了一个异常。以下是我目前的实现: 这是我启动应用程序时发生的异常(我正在使用 Spring 启动)。