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

Spring boot注释混乱

容学林
2023-03-14
    <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework.samples.service.service</groupId>
  <artifactId>VideoManagerServer</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

    <properties>

        <!-- Generic properties -->
        <java.version>1.6</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Web -->
        <jsp.version>2.2</jsp.version>
        <jstl.version>1.2</jstl.version>
        <servlet.version>2.5</servlet.version>


        <!-- Spring -->
        <spring-framework.version>3.2.3.RELEASE</spring-framework.version>

        <!-- Hibernate / JPA -->
        <hibernate.version>4.2.1.Final</hibernate.version>

        <!-- Logging -->
        <logback.version>1.0.13</logback.version>
        <slf4j.version>1.7.5</slf4j.version>

        <!-- Test -->
        <junit.version>4.11</junit.version>

    </properties>

    <dependencies>

        <!-- Spring MVC -->

        <!-- Other Web dependencies -->

        <!-- Spring and Transactions -->

        <!-- Logging with SLF4J & LogBack -->

        <!-- Hibernate -->


        <!-- Test Artifacts -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring-framework.version}</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jersey</artifactId>
            <version>1.2.5.RELEASE</version>
        </dependency>
    </dependencies> 
import java.util.ArrayList;


import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.hakeem.videoserver.model.Video;
import com.hakeem.videoserver.service.VideoService;


@RestController
@RequestMapping(value="/api",consumes=MediaType.APPLICATION_JSON_VALUE,produces=MediaType.APPLICATION_JSON_VALUE)
public class VideoController {

    @Autowired
    VideoService videoService;

    @RequestMapping(value="/add",method=RequestMethod.POST)
    public void addVideo(@RequestBody Video video){

        videoService.addVideo(video);

    }

    @RequestMapping(value="/all",method=RequestMethod.GET)
    public @ResponseBody ArrayList<Video> getAllVideos(HttpServletResponse response){
        ArrayList<Video> videos;
        videos = videoService.getAllVideos();
        if(videos.size() == 0){
            response.setStatus(HttpStatus.NO_CONTENT.value());
        }
        return videos;
    }

    @RequestMapping(value="/delete",method=RequestMethod.DELETE)
    public void deleteVideo(@RequestBody Video video){

        videoService.deleteVideo(video);

    }

    @RequestMapping(value="/find/{id}")
    public @ResponseBody Video findVideo(@PathVariable int id, HttpServletResponse response){

        return videoService.findVideo(id);

    }

    @RequestMapping(value="/testing",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody int testEndPoint(HttpServletResponse response){

        return 10;
    }


}

问题是我的addVideoendpoint只有在我用@RestController进行注释时才起作用,而当我用@Controller进行注释时就不行了。

然而,当我使用@restController和@Controller进行注释时,我的testEndpoint方法仍然有效

但是,如果我将@ResponseBody添加到类或addVideo方法,那么它就可以工作了。

共有1个答案

呼延永新
2023-03-14

这里提出了两个问题:

  1. 为什么@restcontroller可以工作,而@controller不行?

如果检查文档,您将看到RestController是

    null
 类似资料:
  • 我在尝试执行此代码时遇到以下错误。 java.lang.IllegalArgumentException:在“com.app.aggregatorappaconfiguration”上找不到ConfigurationProperties注释。在org.springframework.util.assert.NotNull(assert.java:115)~[spring-core-4.3.2.re

  • 处理注释 mixin 的杰克逊代码是否可以由第三方重用来混合非杰克逊注释? 处理混合蛋白的核心杰克逊类是什么?

  • 我在一个jaxb注释类中有一个方法,当且仅当它使用jersey 1.16编组到JSON时,我想编组一个值,它在下面使用jackson 1.9。我希望使用jaxb的@XmlTransient和jackson的@JsonProperty以这样的方式完成这项工作: …但马歇尔似乎一点也不觉得。没有遇到错误。

  • 我正在使用MongoDB的springboot 2.3.0。注释对我不起作用。如果发生异常,则无法回滚事务。 任何帮助都将得到高度赞赏。 我的控制器类: 我的serviceImpl类 我的MongoConfig类

  • 我在我的SpringBoot应用程序“demo”中使用了注释样式的Resilience4j。当通过RestTemplate调用外部后端时,我希望使用TimeLimiter并重试以实现以下目标: 将REST调用持续时间限制在5秒-->如果需要更长时间,则使用TimeoutException失败 在TimeoutException上重试-->最多尝试2次 为了查看弹性设置的配置是否如设计的那样工作,我

  • 我目前正在将我的项目从Hibernate HBM映射迁移到注释。就我应付小班而言,一切都很容易。但我有相同的大型类,我尝试为这个类混合映射和注释。我了解到,通过使用hibernate属性“hibernate.mapping.priority”并将其设置为“class,hbm”而不是“hbm,class”,这是可能的。(请参阅:在Hibernate中:可以为实体混合注释和XML配置吗?) 例如,我有