spring抽象父類注入
阿新 • • 發佈:2020-11-12
spring使用@Autowired為抽象父類注入依賴
有時候為了管理或者避免不一致性,希望具體服務統一繼承抽象父類,同時使用@Autowired為抽象父類注入依賴。搜了了網上,有些解決方法實現實在不敢恭維,靠子類去注入依賴,那還有什麼意義,如下:
父類:
public abstract class BaseCar {
Settings settings;
}
@Component
public class SportsCar extends BaseCar{
//Autowired修飾方法時,根據方法引數型別判斷例項化哪個類
@Autowired
public void haha(Settings settings){
super.settings=settings;//父類屬性注入
}
public void print(){
System.out.print(settings.getSpeed());
}
}
這還叫自動???
經仔細研究與測試,只要父類要注入的屬性是protected保護級別即可,如下:
public abstract class BusinessService {
@Lazy
@Autowired
protected RedisUtil redisUtil;
Logger logger = LoggerFactory.getLogger(this.getClass());
}
子類繼承後就可以直接使用redisUtil了,不會出現未注入的情況。