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
java ssm框架中SpringMVC中具体如何配置啊,求各位知友们告诉一下,最好全
spring integration:如何从 Spring Controller 调用 Spring Integration?