Skip to content

webinv/java-library-service-container

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Library Service Container

Very simple service container (DI)

Example

MyService.class

public class MyService {
  public String bar() {
    return "bar";
  }
}

OtherService.class

public class OtherService {
  private MyService myService;

  public OtherService (MyService myService) {
    this.myService = myService;
  }

  public String foo() {
    return "foo";
  }
}

MyServiceProvider.class

public class MyServiceProvider implements ServiceProvider<MyService> {
  @Override
  public Class<MyService> provides() {
    return MyService.class;
  }

  @Override
  public MyService provide(ServiceContainer container) {
    return new MyService();
  }
}

OtherServiceProvider.class

public class OtherServiceProvider implements ServiceProvider<OtherService> {
  @Override
  public Class<OtherService> provides() {
    return OtherService.class;
  }

  @Override
  public OtherService provide(ServiceContainer container) {
    return new OtherService(container.get(MyService.class));
  }
}

Main.class

public class Main {
  public static void main(String[] args) {
    ServiceContainer container = new ServiceContainer();

    container.register(new MyServiceProvider());
    container.register(new OtherServiceProvider());

    String results = container.get(OtherService.class).foo();

    System.out.println(results);
  }
}