作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Spring boot 项目中有以下 Controller 类,分为接口(interface)和实现:
public interface UserAccountController {
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(@RequestBody UserAccountEntity account,
HttpServletResponse response) throws IOException;
@RequestMapping(value = "/signup", method = RequestMethod.POST)
public String create(@Valid @RequestBody UserAccountEntity userAccount,
HttpServletResponse response, BindingResult result);
}
@RestController
@RequestMapping("/api/authentication")
public class UserAccountControllerImpl implements UserAccountController {
@Autowired
private UserAccountService userAccountService;
@Override
public String login(@Valid @RequestBody UserAccountEntity account,
HttpServletResponse response) throws IOException {
//...
}
@Override
public String create(@Valid @RequestBody UserAccountEntity userAccount,
HttpServletResponse response, BindingResult result) {
//....
}
}
当我将 RestController 和 RequestMapping 注解移动到界面时,它不起作用。但是在接口(interface)上注释方法是可行的。这两个注释有何不同?
最佳答案
@RestController
继承自 @Controller
,而 @Controller
又继承自 @Component,从而导致在应用程序上下文中创建 Spring Bean。
@RequestMapping
继承自 @Mapper
,用于将 Rest- 或 Web-Controller 方法标记为处理程序方法。
至于为什么 Spring 的实现不允许第一个继承而允许第二个继承,我只能推测:
@Mapping
继承的有用用例,因为您可以拥有多个具有不同 url 前缀的 RestController,但除此之外具有相同的端点。 @Component
注解可继承可能会导致非自愿创建 Spring Bean,因为客户端在实现接口(interface)时可能无法注意到该注解。关于java - 如何将Service/Controller层类拆分为interface和impl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52455268/
我是一名优秀的程序员,十分优秀!