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

添加@Validated spring注释后未实例化控制器实现接口

罗均
2023-03-14

我有一个下面的RestController,我试图验证search()方法输入参数映射是否为空。然而,在单元测试期间,当RestController实现ServiceIF接口时,它不会被实例化。若我评论实现接口,那个么控制器被实例化,验证工作正常。我不明白为什么为实现某个接口的类注释@Validated不起作用。

@Validated
@RestController
public class MyServiceImpl implements ServiceIF{

    @RequestMapping(value = "search", method = RequestMethod.POST, produces = APPLICATION_JSON)
    public ResponseEntity<Object> search(@RequestBody @NotEmpty Map<String, String> body) {
    }
}

我正在写一个下面的单元测试来验证空地图:

RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { Application.class})
public class MyServiceImplTest {

    @Autowired
    private ServiceIF controller;
    private MockMvc mockMvc;

    @Before
    public void setUp(){
            mockMvc = MockMvcBuilders.standaloneSetup(controller)
                                    .setControllerAdvice(new InputValidationsExceptionHandler())
                                    .build();
    }

    @After
    public void tearDown(){
            mockMvc = null;
    }

    @Test
    public void testSearchInvalid() throws Exception{
        ObjectMapper mapper = new ObjectMapper();
        Map<String, String> map = new HashMap<>();
        String data = mapper.writeValueAsString(map);

        //Test invalid case
        this.mockMvc.perform(post("/search").content(data)
                                .contentType(MediaType.APPLICATION_JSON))
                                .andDo(print())
                                .andExpect(status().isBadRequest());

    }
} 

共有1个答案

呼延凌
2023-03-14

问题可能出现在ServiceIF界面中。IfServiceIF。搜索方法参数没有注释@NotEmpty。您将通过应用程序启动获得异常:

javax。验证。ConstraintDeclarationException:HV000151:重写另一个方法的方法不能重新定义参数约束配置

看到这个规格了吗

 类似资料:
  • 我已经坚持了几个小时。我不知道为什么我的JavaFX控制器指向null。我在中制作了一个JavaFX GUI,将控制器类及其适当的骨架代码添加到我的项目中。但是当我在我的方法中实例化控制器时,它指向null。 使用文件夹树: 我遵循了此处和此处提及的说明,以及其他一些StackOverflow页面。我完全按照上面提到的方式复制指令,但我的控制器仍然为空。 我缺乏想法,有人知道我做错了什么吗?

  • 本文向大家介绍SpringMVC编程使用Controller接口实现控制器实例代码,包括了SpringMVC编程使用Controller接口实现控制器实例代码的使用技巧和注意事项,需要的朋友参考一下 Controller简介 Controller控制器,是MVC中的部分C,为什么是部分呢?因为此处的控制器主要负责功能处理部分: 1、收集、验证请求参数并绑定到命令对象; 2、将命令对象交给业务对象,

  • ...Spring implements a controller in a very abstract way, which enables you to create a wide variety of controllers. 控制器作为应用程序逻辑的处理入口,它会负责去调用你已经实现的一些服务。通常,一个控制器会接收并解析用户的请求,然后把它转换成一个模型交给视图,由视图渲染出页面最终呈现

  • 问题内容: 在界面中添加Javadoc注释并在实现中添加非Javadoc注释是否正确? 当您自动生成注释时,大多数IDE都会为实现生成非JavaDoc注释。具体方法不应该有描述吗? 问题答案: 对于仅实现(不是覆盖)的方法,请确定为什么不这样做,尤其是如果它们是公共的。 如果您处于压倒一切的情况,并且打算复制任何文本,那么绝对不能。复制是导致差异的必经之路。结果,用户将基于检查父类型还是子类型中的

  • 我有一个Micronaut应用程序,它的模块都是用Java和Kotlin编写的。Java模块(控制器逻辑)有一个接口,由指定@Singleton注释的Kotlin类实现。 注意:https://github.com/micronaut-projects/micronaut-core/discussions/5254有应用程序jar(demo.zip)和复制步骤。