@Autowired出现Field injection is not recommended警告

在使用@Autowired出现Field injection is not recommended警告,使用变量依赖注入的方式是不被推荐的。

       依赖注入框架的核心思想之一就是受容器管理的类不应该去依赖容器所使用的依赖。换句话说,这个类应该是一个简单的POJO(Plain Ordinary Java Object)能够被单独实例化并且你也能为它提供它所需的依赖。只有这样,你才能在单元测试中实例化这个类而不必去启动依赖注入容器,实现测试分离(启动容器更多是集成测试)。

依赖注入主要有3种方式:

1. 变量注入:

    @Autowired
    public SysRoleService sysRoleService;

2.构造器注入:

    private SysLogService sysLogService;
    private SysRoleService sysRoleService;

    @Autowired
    public SysService(SysRoleService sysRoleService,SysLogService sysLogService) {
        this.sysRoleService = sysRoleService;
        this.sysLogService= sysLogService;
    }

3.setter注入:


    public SysRoleService sysRoleService;

    @Autowired
    public void setSysRoleService(SysRoleService sysRoleService) {
        this.sysRoleService = sysRoleService;
    }

  变量注入:

       优点:代码非常简洁,可以无限扩展。

       缺点:不能有效的指明依赖,容易出现空指针异常。

  Setter方式:

       优点:选择注入,即使没有注入这个依赖,那么也不会影响整个类的运行。   

  构造器方式:

        优点:通过强制指明依赖注入来保证这个类的运行,类不再对依赖负责。

        缺点:构造器参数的数量就会变得太多以至于很容易出现错误。

        所以应该尽量避免变量方式注入,使用setter方式注入或者构造器注入,这个类是强制依赖的话就用构造器方式,选择依赖的话就用setter方法注入。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值