我在Spring的@Inject工作中遇到了一些奇怪的行为.
这个例子效果很好:
@Controller
@RequestMapping("/")
public class HomeController {
@Autowired
private SomeBean someBean;
@RequestMapping(method = GET)
public String showHome() {
System.out.println(someBean.method());
return "home";
}
}
但是如果我用@Inject替换@Autowired,showHome方法将抛出NullPointerException,因为someBean为null.与二传手注射相同的事情.但是使用构造函数注入@Autowired和@Inject都运行良好.
为什么会这样?
我正在使用Spring 4.3.1.
我在pom.xml中的依赖关系如下所示:
最佳答案
Spring支持JSR-330标准注释,您只需将相关的jar放在类路径中.如果您正在使用maven,请将以下内容添加到您的pom.xml:
原文链接:https://www.f2er.com/spring/432449.html
为什么构造函数注入工作?
从Spring 4.3开始,如果目标bean只定义了一个构造函数,则不再需要指定@Autowired注释.由于您只有一个构造函数,因此无论您使用哪个注释,都会注入所需的依赖项.
另请查看why field injection is evil的这篇文章.