Skip to content

Tiny Dependency Injection Framework (Similar to Spring DI)

License

Notifications You must be signed in to change notification settings

dborchard/tiny-di-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codekrypt Dependency Injector

Feature

  • Supports Field Injection using @Autowire & @Qualifier
  • Supports Constructor Injection.
  • Supports @PostConstruct

Usage

HornAirImp.java

@Component
public class HornAirImpl implements Horn {

  @Override
  public void honk() {
    System.out.println("Air Horn Implementation called.");
  }

  @PostConstruct
  public void postConstruct() {
    System.out.println("Air Horn Initialized.");
  }
}

CarService.java

/** Constructor Injection. */
@Component
public class CarService {

  private final Horn horn;
  private int odometerReading;

  @Autowire
  public CarService(@Qualifier("HornAirImpl") Horn horn) {
    odometerReading = 0;
    this.horn = horn;
  }

  public void incrementOdometer() {
    odometerReading++;
  }

  @PostConstruct
  public void honk() {
    System.out.print("In Car Service: ");
    horn.honk();
  }
}

TruckService.java

/** Field Injection. */
@Component
public class TruckService {

  private int odometerReading;

  @Qualifier(value = "HornAirImpl")
  @Autowire
  private Horn horn;

  public TruckService() {
    odometerReading = 0;
  }

  public void incrementOdometer() {
    odometerReading++;
  }

  @PostConstruct
  public void honk() {
    System.out.print("In Truck Service: ");
    horn.honk();
  }
}

VehicleApplication.java

public class VehicleApplication {

  public static void main(String[] args) {
    CodekryptInjector.run(VehicleApplication.class);
  }
}

Output

In Truck Service: Air Horn Implementation called.
Air Horn Initialized.
In Car Service: Air Horn Implementation called.

TODO

  • Implement Constructor Injection.
  • Post Construct invocation order.
  • Fix multiple interface bean resolution.
  • Fix class scanning inside fat JAR (ie after mvn clean install).

About

Tiny Dependency Injection Framework (Similar to Spring DI)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages