加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

java – 在Spring中使用@Inject进行字段注入

发布时间:2020-12-15 01:34:22 所属栏目:大数据 来源:网络整理
导读:我在Spring的@Inject工作中遇到了一些奇怪的行为. 这个例子效果很好: @Controller@RequestMapping("/")public class HomeController { @Autowired private SomeBean someBean; @RequestMapping(method = GET) public String showHome() { System.out.printl

我在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:


为什么构造函数注入工作?

从Spring 4.3开始,如果目标bean只定义了一个构造函数,则不再需要指定@Autowired注释.由于您只有一个构造函数,因此无论您使用哪个注释,都会注入所需的依赖项.

另请查看why field injection is evil的这篇文章.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读