Using setter/field injection over constructor injection

This is probably the most easy and straightforward option. In circular dependency, if constructor injection creates a circular reference, you can defer the DI in the setter method. This allows Spring to load a bean context without any issues. The updated code would be as follows:

@Component("employee")public class Employee {  private HRService hrService;  @Autowired  public void setHrService(HRService hrService) {    this.hrService = hrService;    System.out.println(" HRService dependency is set ");  }}@Component("hrService")public class HRService {  private CommonUtilService commonUtilService;  @Autowired  public void setCommonUtilService(CommonUtilService commonUtilService) { this.commonUtilService ...

Get Java 9 Dependency Injection now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.