Deferring the setting of a dependency from constructor to setter

Let's understand how solves circular dependency by providing a dependency from the constructor to the setter method. There is a special case where due to circular dependency, you can't even create the object of the domain model. For example, say you are developing an application for a tyre manufacturer; who uses these tyres for cars. Based on the car's max speed, you need to set the min rim size of the tyre. For this, you have created the Car and Tyre classes, as in the following snippet:

public class Car {  private Tyre tyre;  private int maxSpeed;  public Car(Tyre tyre) {    this.tyre = tyre;    setMaxSpeed(150);  }  public int getMaxSpeed() {    return maxSpeed;  } public void setMaxSpeed(int ...

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.