femto

A teeny-tiny dependency injection library

Лицензия

Лицензия

MIT
Группа

Группа

uk.co.probablyfine
Идентификатор

Идентификатор

femto
Последняя версия

Последняя версия

0.2.0
Дата

Дата

Тип

Тип

jar
Описание

Описание

femto
A teeny-tiny dependency injection library
Ссылка на сайт

Ссылка на сайт

https://github.com/mrwilson/femto
Система контроля версий

Система контроля версий

https://github.com/mrwilson/femto

Скачать femto

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/uk.co.probablyfine/femto/ -->
<dependency>
    <groupId>uk.co.probablyfine</groupId>
    <artifactId>femto</artifactId>
    <version>0.2.0</version>
</dependency>
// https://jarcasting.com/artifacts/uk.co.probablyfine/femto/
implementation 'uk.co.probablyfine:femto:0.2.0'
// https://jarcasting.com/artifacts/uk.co.probablyfine/femto/
implementation ("uk.co.probablyfine:femto:0.2.0")
'uk.co.probablyfine:femto:jar:0.2.0'
<dependency org="uk.co.probablyfine" name="femto" rev="0.2.0">
  <artifact name="femto" type="jar" />
</dependency>
@Grapes(
@Grab(group='uk.co.probablyfine', module='femto', version='0.2.0')
)
libraryDependencies += "uk.co.probablyfine" % "femto" % "0.2.0"
[uk.co.probablyfine/femto "0.2.0"]

Зависимости

Библиотека не имеет зависимостей. Это самодостаточное приложение, которое не зависит ни от каких других библиотек.

Модули Проекта

Данный проект не имеет модулей.

femto

Maven Central

Femto is a teeny-tiny dependency injection library written in pure standard Java.

Installing

Maven:

<dependency>
  <groupId>uk.co.probablyfine</groupId>
  <artifactId>femto</artifactId>
  <version>${version}</version>
</dependency>

Gradle:

implementation "uk.co.probablyfine:femto:${version}"

Usage

class Example {

    public static void main(String... args) {
        // Initialise a new injector
        var injector = new FemtoInjector();
        
        // Bind a class
        injector.bind(One.class); 

        // Bind a class to an implementing class
        injector.bind(Two.class, TwoImplementation.class); 

        // Bind a class to an instance
        injector.bindInstance(Three.class, new ThreeImplementation()); 

        // Depends on One, Two, Three
        injector.bind(Four.class); 
        
        // Create a new object
        Four four = injector.get(Four.class);
    }
}

Design Decisions

  • Singleton by default: The first call to FemtoInjector#get caches the result for each class and returns the same value afterwards
  • Lazy by default: FemtoInjector does not initialise any classes until .get() is called.
  • No annotation "magic": Clients register components directly with the injector rather than using JSR 330 (@Inject) annotations.
  • Prefer standard Java over dependencies: Keeps the library small, and the source code easy to read.
  • No named bindings: Usd the type system to extend and name classes instead.

Версии библиотеки

Версия
0.2.0
0.1.0