An open API service indexing awesome lists of open source software.

https://github.com/ptrvsrg/clojure-di

DI-контейнер для Clojure
https://github.com/ptrvsrg/clojure-di

clojure clojure-library dependency-injection inject java maven

Last synced: 5 months ago
JSON representation

DI-контейнер для Clojure

Awesome Lists containing this project

README

          

# DI-контейнер для Clojure

## Требования

Необходимо реализовать DI-контейнер для Clojure со следующими требованиями:

1. Поддержка внедрения зависимости по заданному протоколу (Clojure Protocol)
2. Поддержка конфигурации, обеспечивающей:

+ управление жизненным циклом объектов (`Singleton` и `Prototype` );
+ инициализацию полей для типов, объявленных через `defrecord`;

3. Поддержка пользовательской инициализации/деинициализации объектов (по аналогии с
аннотациями JavaEE `@PostConstruct` и `@PreDestroy`);
1. (Опционально) Поддержка внедрения экземпляров Java-классов через их интерфейсы;
2. (Опционально) Распространение действия механизма на Java-код через стандартную аннотацию `javax.inject.Inject`.
3. (Дополнительно) Построение графа зависимостей.
4. (Дополнительно) Приоритезация внедряемых зависимостей.

## Разработка

### Предварительные условия

- [Leiningen](https://leiningen.org/)

### Сборка JAR

```bash
lein uberjar
```

### Запуск линтеров

```bash
lein clj-kondo
```

### Запуск тестов

```bash
lein test
```

### Установка в локальный репозиторий

```bash
lein install
```

## Сотрудничество

См. [CONTRIBUTING](CONTRIBUTING.md).

## Лицензия

См. [Apache-2.0 License](LICENSE.md).