告警
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是启动服务的时候注入