Spring的Controller如何命名最好

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的Controller如何命名最好相关的知识,希望对你有一定的参考价值。

:java web开发中关于controller,dao,service的命名建议就是根据model来命名,比如: Model User.java Dao UserDao.java Controller UserController.java 这样统一规则后,很多代码生成工具会帮你完成从db到java代码的转换工作。 参考技术A java web开发中关于controller,dao,service的命名建议就是根据model来命名,比如:
Model
User.java
Dao
UserDao.java
Controller
UserController.java
这样统一规则后,很多代码生成工具会帮你完成从db到java代码的转换工作。
比如我分享的这个代码,就是根据mysql的表名来生成所有需要的model,dao,service,controller的。

如何测试 Spring Boot Controller 的错误输出?

【中文标题】如何测试 Spring Boot Controller 的错误输出?【英文标题】:How to test the error output of a Spring Boot Controller? 【发布时间】:2015-05-21 04:25:03 【问题描述】:

我已经实现了一个带有简单请求/响应的简单控制器。

控制器

    @RestController
@RequestMapping("/")
public class HelloWorldController extends AbstractRestController 

    @RequestMapping(value = "/hello", method = RequestMethod.POST)
    public HelloWorldResponse sayHello(@Valid @RequestBody HelloWorldRequest request) 

        String message = String.format("Hello %s!", request.getSayHelloTo());
        return new HelloWorldResponse(message);
    


请求

public class HelloWorldRequest 

    @NotEmpty
    @NotNull
    private String sayHelloTo;

    protected HelloWorldRequest() 

    

    public HelloWorldRequest(String sayHelloTo) 
        this.sayHelloTo = sayHelloTo;
    

    public String getSayHelloTo() 
        return sayHelloTo;
    

    @Override
    public String toString() 
        return "HelloWorldRequest" +
                "sayHelloTo='" + sayHelloTo + '\'' +
                '';
    

当我想测试默认错误处理的正确输出时,我似乎无法使用单元测试检查默认 json 格式的输出。响应似乎总是空的。当我通过正常的 curl 命令触发请求时,会看到正确的响应。我认为这是因为返回的 JSON 无法映射到 HelloWorldResponse。有什么方法可以检查返回的输出在响应正文中是否有效?

测试

class TestSpec extends Specification 

    MockMvc mockMvc

    def setup() 
        mockMvc = MockMvcBuilders.standaloneSetup(new HelloWorldController()).build()
    

    def "Test simple action"() 
        when:
        def response = mockMvc.perform(post("/hello")
                .contentType(MediaType.APPLICATION_JSON)
                .content('"sayHelloTo": ""')
        )

        then:
        response.andExpect(status().isOk())
    

Json 响应

 
       "timestamp" : 1426615606,
       "exception" : "org.springframework.web.bind.MissingServletRequestParameterException",
       "status" : 400,
       "error" : "Bad Request",
       "path" : "/welcome",
       "message" : "Required String parameter 'name' is not present"
    

【问题讨论】:

你能给我们看看你的测试吗? 该死.. 确实忘记了测试!将其添加到问题中。 【参考方案1】:

尝试使用 print() 方法进行调试,可能在执行过程中抛出异常。

MvcResult andReturn = mockMvc.perform(get("/api") .accept(MediaType.APPLICATION_JSON)) .andDo(print()) .andReturn();

【讨论】:

【参考方案2】:

您发布的@Controller 类和测试用例(和响应)似乎不匹配(您在测试用例中调用/hello 而您的@RequestMapping/welcome ...我们可以吗?看到正确的代码了吗?看起来您设置了 @RequestParam("name"),但您没有通过它。

【讨论】:

以上是关于Spring的Controller如何命名最好的主要内容,如果未能解决你的问题,请参考以下文章

Spring Rest Controller PUT 方法请求正文验证?

再谈Spring之不要在Controller父类中使用modelInit

spring MVC注解深入研究

java ssm框架中SpringMVC中具体如何配置啊,求各位知友们告诉一下,最好全

Spring Bean最正确的使用方法!

spring integration:如何从 Spring Controller 调用 Spring Integration?