@Autowired idea 警告

告警

idea报错的弹框信息,翻译过来就是“不建议使用字段注入方式”;
那么不使用字段注入,使用什么方式来代替呢,什么叫字段注入。

直白的讲,注解作用在字段上,就叫字段注入,除了字段注入,还有setter注入,构造方法注入。
面对后两者,idea都不会开出黄牌。

@Slf4j
@Service
public class DataSetServiceImpl implements IDataSetService {

  /**
   * 字段注入(idea告警)
   */
  @Autowired
  private MongoTemplate mongoTemplate;

  /**
   * 构造方法注入
   */
  @Autowired
  public DataSetServiceImpl (MongoTemplate mongoTemplate) {
    this.mongoTemplate = mongoTemplate;
  }

  /**
   * setter注入
   */
  @Autowired
  public void setMongoTemplate (MongoTemplate mongoTemplate) {
    this.mongoTemplate = mongoTemplate;
  }

}

原因(字段注入缺点)

1、对于final变量不起作用
2、隐藏依赖关系,易导致循环依赖而不自知,
3、注入时机后置,风险增大,字段注入是业务执行的时候注入,构造器或者setter是启动服务的时候注入

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容