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

为什么我要用Spring靴Rest404

东方化
2023-03-14

我正在使用Spring Boot实现rest服务。实体类在一个单独的包中定义。所以我在A中添加了组件注释pplication.java.

@Configuration
@EnableAutoConfiguration
@ComponentScan("org.mdacc.rists.cghub.model")
@EnableJpaRepositories(basePackages = "org.mdacc.rists.cghub.model") 
public class Application 
{
    public static void main( String[] args )
    {
        SpringApplication.run(Application.class, args);
    }
}

这是我的控制器类:

// SeqController.java
@RestController
public class SeqController {

    @Autowired
    private SeqService seqService;
    @RequestMapping(
            value = "/api/seqs", 
            method = RequestMethod.GET, 
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<List<SeqTb>> getSeqs() {
        List<SeqTb> seqs = seqService.findAll();

        return new ResponseEntity<List<SeqTb>>(seqs, HttpStatus.OK);
    }
}

我还创建了一个JPA数据存储库,扩展了JPARepository,并在其中添加自定义查询代码。

// SeqRepository.java
@Repository
public interface SeqRepository extends JpaRepository<SeqTb, Integer> {

    @Override
    public List<SeqTb> findAll();

    @Query("SELECT s FROM SeqTb s where s.analysisId = :analysisId")
    public SeqTb findByAnalysisId(String analysisId);
}

下面是实现服务接口的servicebean类

// SeqServiceBean.java
@Service
public class SeqServiceBean implements SeqService {
    @Autowired
    private SeqRepository seqRepository;

    @Override
    public List<SeqTb> findAll() {
        List<SeqTb> seqs = seqRepository.findAll();
        return seqs;
    }

    public SeqTb findByAnalysisId(String analysisId) {
        SeqTb seq = seqRepository.findByAnalysisId(analysisId);
        return seq;
    }
}

当我启动应用程序并在浏览器中键入以下url时“http://localhost:8080/api/seqs“,我得到404错误。我错过了什么?

编辑#1:我决定取出JPA存储库的东西并将控制器类更改为以下内容:

@RestController
//@RequestMapping("/")
public class SeqController {
    private static BigInteger nextId;
    private static Map<BigInteger, Greeting> greetingMap;

    private static Greeting save(Greeting greeting) {
        if(greetingMap == null) {
            greetingMap = new HashMap<BigInteger, Greeting>();
            nextId = BigInteger.ONE;
        }
        greeting.setId(nextId);
        nextId = nextId.add(BigInteger.ONE);
        greetingMap.put(greeting.getId(), greeting);
        return greeting;
    }

    static {
        Greeting g1 = new Greeting();
        g1.setText("Hello World!");
        save(g1);

        Greeting g2 = new Greeting();
        g1.setText("Hola Mundo!");
        save(g2);

    }
    @RequestMapping(
            value = "/api/greetings", 
            method = RequestMethod.GET, 
            produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Collection<Greeting>> getGreetings() {
        Collection<Greeting> greetings = greetingMap.values();
        return new ResponseEntity<Collection<Greeting>>(greetings, HttpStatus.OK);

    }
}

当我启动应用程序并在浏览器中输入“localhost:8080/api/greetings”时,我仍然得到404。

共有3个答案

司寇星海
2023-03-14

我将尝试的第一件事是在控制器的类定义上放置@RequestMapping(“/”)。在方法上保持相同的值。

另一件与您的问题无关的事情是,您不需要定义自定义查询。JPA实际上足够智能,只需使用该方法名即可执行您定义的查询。在这里查看findByLastName示例:https://spring.io/guides/gs/accessing-data-jpa/.

楚流觞
2023-03-14

如果您的pom中没有spring boot starter web。然后添加xml,原因可能是代码无法映射endpoint。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
郭翰墨
2023-03-14

==

==

 类似资料:
  • 我想在spring boot项目中使用“truncate table”语句而不是“delete”语句,因为我需要重置mysql中的自动增量id。这是我的代码: 但有一个例外,就像这样: 其他操作已经工作,如插入、更新或选择,原因是什么,我应该修改什么?

  • 我用Spring AOP写了一个非常简单的方面。这是可行的,但我在理解到底发生了什么方面有一些问题。我不明白为什么我必须添加aspectjweaver。罐子Spring AOP文档明确指出,只要我只使用Spring AOP,我就不需要aspectj编译器或weaver: 尽管AOP运行时仍然是纯Spring AOP,并且不依赖AspectJ编译器或weaver。 我的配置如下所示: 我也尝试了XM

  • 问题内容: 我用Spring AOP写了一个非常简单的Aspect。它有效,但是我在理解实际情况时遇到了一些问题。我不明白为什么我必须添加Aspectjweaver.jar?Spring- AOP文档明确指出,只要我仅使用Spring-AOP,就不需要AspectJ编译器或weaver: 但是,AOP运行时仍然是纯Spring AOP,并且不依赖于AspectJ编译器或编织器。 我的配置如下所示:

  • 本文向大家介绍为什么要用 spring boot?相关面试题,主要包含被问及为什么要用 spring boot?时的应答技巧和注意事项,需要的朋友参考一下 配置简单 独立运行 自动装配 无代码生成和 xml 配置 提供应用监控 易上手 提升开发效率

  • 我不是流口水的专家。不过,通过实验,我对它有了一些了解。我无法欣赏,为什么我需要它。 我的典型应用程序是业务Web应用程序。是的,他们确实有一些规则。但是,这些都是使用数据库表、SQL查询和中的良好UI来实现的,以便业务用户修改规则。规则不是武断的,它们在投入生产之前是经过仔细考虑的。 我的业务用户永远不会使用(Drools)脚本语言来修改任何内容。更不用说修改规则了。他们非常乐意使用UI屏幕来修

  • 问题内容: 这里有人使用Spring Android吗?如果是这样,您为什么认为值得? 谢谢 问题答案: 如果您需要从Android应用程序访问RESTful Web服务,则Spring Android非常有用。这在实时数据应用程序中很常见,例如新闻和天气行情,股票行情等。 目前,使用Spring Android项目有两个好处:Commons logging和RestTemplate。 http: