The Java Container is a lightweight library for managing dependencies and performing dependency injection, based on the service container of Laravel.
The bind
method binds an interface to a concrete class. When the Mail.class
is resolved, a Mailgun.class
is returned.
import static be.dem.container.Container.bind;
public void register() {
bind(InterfaceB.class, ConcreteB.class);
bind(Mail.class, Mailgun.class);
}
Once a singleton binding is resolved, the same object instance will be returned.
import static be.dem.container.Container.bindSingleton;
public void register() {
bindSingleton(Config.class);
}
There is no difference between resolving a basic binding or a singleton.
import static be.dem.container.Container.resolve;
public void someMethod() {
// mail is a Mailgun object
Mail mail = resolve(Mail.class)
// config is a singleton object
Config config = resolve(Config.class)
}
Maven:
<dependency>
<groupId>be.dem.container</groupId>
<artifactId>java-container</artifactId>
<version>0.1.0</version>
<type>pom</type>
</dependency>
Gradle:
compile 'be.dem.container:java-container:0.1.0'
There is a Dockerfile
that specifies all the requirements to test, build and publish the library.
$ docker build -t java-container .
$ docker run -it --rm -v ${PWD}:/usr/src/app --name java-container-app java-container
$ ./gradlew test
$ ./gradlew build
- Example showing automatically Constructor Argument Injection
The MIT License (MIT). Please see License File for more information.