//依赖注入 --npe
@Service
public class TestAService{
@Autowired
private TestBService testBService;
private final String test = testBService.getString();
}
@Service
public class TestBService{
@Autowired
private TestAService testAService;
}
//构造器注入--循环引用
@Service
@RequiredArgsConstructor
public class TestAService{
private final TestBService testBService;
}
@Service
@RequiredArgsConstructor
public class TestBService{
private final TestAService testAService;
}
依赖注入 与构造器注入存在两种带坑情况:
1.依赖注入,注入元素在未初始化时,可能引起npe异常;在要求所有属性初始化完成情况下,使用构造器注入较为合理;
2.构造器注入,则如果内部bean存在互相引用的情况,产生循环依赖,导致编译不通过(旧代码改造常见)。绕过循环依赖的解决办法,通常情况下是set注入
综合:根据项目情况各取所需,当然如果循环依赖的问题,解决成本不大,优先使用构造器注入;