Если вы поглядываете за судьбой BSL Language Server, то наверное уже слышали про Spring. Как больно мы на него переезжали, и как вкусно там стало после этого переезда.
Одной из основных целей переезда на Spring была реорганизация работы с зависимостями между компонентами. Хотелось честного Dependency Injection, да еще и Inversion of control в паре мест. Разложить все по полочкам, развязать между собой, спрятать инфраструктурный код подальше от кода полезного. Спринг это дал. А в 1С...
В 1С что с DI, что с IoC все сложновато. И если IoC еще с горем пополам можно провернуть, то с DI грустно. Интроспекции нет, не говоря уже о полноценной рефлексии. Но... Рефлексия есть в OneScript!
Я очень люблю проверять на оскрипте различные концепции. Брать некий базовый инструмент и творить! Загрузка сценариев из строки родила notify и fluent. Поддержка аннотаций и их параметров на пару с развитием рефлектора выродилась в entity. Что же, настал черед DI!
Встречайте, ОСень!
https://github.com/nixel2007/autumn
ОСень - это фреймворк для построения (хотелось бы сказать полноценных, но тут уж как повезет) приложений на основе компонентов и внедрения зависимостей. Базовый комплект включает в себя:
* описание компонентов на основе классов;
* фабрики и фабричные методы для создания компонентов;
* поддержку синглтонов и prototype/transient-компонентов;
* внедрение зависимостей через конструктор, поля и методы-сеттеры;
* дополнительные пользовательские обработчики создания компонентов (aka bean post processors);
* вызов post-construct метода;
* специфичный юмор.
Удивительно, но все работает, тесты в наличии.
Т. к. разработка использует фичи движка, еще не вошедшие в стабильный релиз OneScript, то я пока не выкладываю ОСень в хаб, дабы не поломать
opm install --all у тех, кто его использует. Но вы всегда можете поставить свежий ночник оскрипта и забрать релиз ОСени с GitHub.Вот такие
P.S. Спасибо @theEvilBeaver за настрой и завязку ридми. Это... Это прекрасно.