前言
最近写代码的时候,碰到一个小问题;
可以看到,Spring Boot不推荐使用@Autowired
的方式进行属性注入。
我之前一直这样写,从来没觉得这有什么问题,看到这个报错,心里咯噔一下,然后忽然想,@Autowired 与@Resource有什么不同。
然后我发现,我竟然完全不记得了。
因此,写这篇笔记记录一下。
先解释一下,为什么Spring Boot不推荐使用@Autowired
的方式进行属性注入。
@Autowired
是spring定义的注解,与Spring框架强耦合,换成别的框架,可能不支持。@Resource
是JSR-250定义的注解,是Java标准,支持几乎所有java框架。
换言之,@Autowired
能用的,@Resource
也能用,@Autowired
不能用的,@Resource
还能用。
不过现在java程序员几乎等同于Spring程序员,说这个,似乎没有必要。
简单举例
LaymanController.java
@Controller
public class LaymanController {
@Autowired
public LaymanService laymanService;
@GetMapping(value = "/sayHello")
public void sayHello() {
laymanService.sayHello();
}
}
LaymanService
public