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
- Host: GitHub
- URL: https://github.com/ptrvsrg/clojure-di
- Owner: ptrvsrg
- License: apache-2.0
- Created: 2025-12-13T15:27:15.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2025-12-23T18:42:49.000Z (6 months ago)
- Last Synced: 2025-12-25T07:41:50.901Z (6 months ago)
- Topics: clojure, clojure-library, dependency-injection, inject, java, maven
- Language: Clojure
- Homepage:
- Size: 50.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Notice: NOTICE.md
- Dco: DCO.md
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).