Существует ли простая платформа, допуская Внедрение зависимости в одинокой программе?

Одно решение состоит в том, чтобы присоединить метку времени к каждому объекту очереди и отбрасывать объект после того, как 8 секунд передали. Можно выполнить эту проверку каждый раз, когда очередь добавляется к.

Это только работает, если Вы ограничиваете размер очереди 5 и отбрасываете какие-либо дополнения, пока очередь полна.

6
задан Thorbjørn Ravn Andersen 27 July 2011 в 13:41
поделиться

10 ответов

Вы смотрели фреймворк Google Guice ? Он довольно легкий и основан на аннотациях, избегая файлов конфигурации XML

Также есть Pico - и нано-контейнер (от codehaus), которые довольно легкие, хотя в прошлый раз Я просмотрел (по общему признанию, несколько лет назад) документацию не хватало.

Я должен сказать, что согласен с другими в том, что, как я полагаю, является вашим предположением, что Spring массивный и запутанный. Это действительно очень простой контейнер IoC, и его следует рекомендовать.

5
ответ дан 8 December 2019 в 13:47
поделиться

Вы всегда можете использовать Spring Framework 2.5. Это большой модуль, но если вы планируете использовать только DI, вы можете использовать модули spring-core и spring-beans, которые довольно малы (около 500 КБ и 300 КБ).

Существует также Google Guice 2.0, который поставляется с пакет только с базовыми вещами (без AOP) и его размер 430 КБ.

7
ответ дан 8 December 2019 в 13:47
поделиться

Я знаю, что некоторые из вас могут оказаться полезными:

Я нашел Plexus очень полезным в автономном режиме. приложения, поскольку в нем есть дополнительные служебные компоненты для взаимодействия с интерфейсом командной строки.

2
ответ дан 8 December 2019 в 13:47
поделиться

Под "гигантским" я предполагаю, что вы имеете в виду Spring, но это несправедливо, поскольку вы можете выбрать отдельные части Spring, который вы хотите использовать. Если все, что вам нужно, это контейнер IoC, просто используйте соответствующие файлы JAR и соответствующий бит API и игнорируйте остальное.

1
ответ дан 8 December 2019 в 13:47
поделиться

На данный момент большинство ответов, похоже, связано с размером добавляемых jar-файлов.

Однако я думаю, что более важным вопросом является влияние на проект: сколько строки кода должны быть добавлены / изменены для использования фреймворка?

Даже «большой» фреймворк Spring на самом деле очень прост в использовании:

Вам в основном понадобится:

  • XML-файл, который описывает ваши фабрики.
  • одна строка кода для инициализации контейнера путем загрузки файла xml

Приятно то, что spring ненавязчивый . Таким образом, вам не нужно реализовывать определенные интерфейсы или добавлять какие-либо конкретные аннотации или импорт в ваши классы.

В лучшем случае единственным местом, где вы фактически инициализируете контейнер Spring, является только . поместите в свое приложение, которое фактически зависит от классов Spring.

1
ответ дан 8 December 2019 в 13:47
поделиться

I would strongly suggest to take a look at Spring ME. Although originally meant to be a way to use Spring on Java ME applications, it also works fine for standalone applications.

True, it doesn't give you all of the bells and whistles that Spring (Full) has to offer, but then again, Full Spring is much much more than a simple dependency injection framework.

On the plus side: it's based on a (compliant) subset of Spring's configuration files, and the footprint of the runtime is 0%. In fact, there isn't any. Spring ME will take your application context, and turn it into a class that has no dependencies on classes other than your own.

1
ответ дан 8 December 2019 в 13:47
поделиться

Что не так с Spring ?

В наши дни он упакован довольно хорошо, так что вам не придется брать с собой весь комплект и кучу мусора.

В стороне. , Я не фанат фреймворков на основе аннотаций. Это связано с тем, что аннотации привязаны к классу, а не к экземпляру, последний из которых является предварительным условием, imho, для DI. Это означает, что каждый экземпляр данного класса получает один и тот же внедренный объект (ы), что, кажется, противоречит сути.

Также учтите, что DI даже не нужен фреймворк, что не так с вашим основным методом, соединяющим приложение?

0
ответ дан 8 December 2019 в 13:47
поделиться

Около года назад я задал себе очень похожий вопрос. Поэтому я провожу несколько часов за чтением документации Spring и Guice. Примерно через час работы со Spring у меня осталось ощущение, что я могу запустить базовое веб-приложение, но понятия не имел, как использовать его в отдельном приложении. После часа работы с документом Guice все щелкнуло, и я увидел, как мне делать то, что я хотел. Теперь о том, чтобы рекомендовать Guice? Ну нет. Что ваша команда уже знает? Если кто-то уже знает, скажите «Весенний отпуск», и пусть они его распространят. Как и в случае с Guice или Pico.

0
ответ дан 8 December 2019 в 13:47
поделиться

Если вы хотите что-то максимально простое и подходящее, напишите код, который делает то, что вы хотите. Предположительно, это включает в себя соединение заводов, основанное частично на фиксированной логике, а частично на настройках времени выполнения.

Это имеет то преимущество, что набор возможных конфигураций времени выполнения известен, а значит, его можно документировать и тестировать.

Его недостаток заключается в том, что развертывание непредвиденного изменения логики по своей сути занимает дополнительную секунду или около того времени компиляции, и (что более важно) не может быть внедрено в производство без полного тестирования, замаскированного под «просто изменение конфигурации» .

0
ответ дан 8 December 2019 в 13:47
поделиться

Если вам нужно что-то действительно легкое, вы можете взглянуть на предохранитель , он достаточно расширяемый, поэтому, возможно, это то, что вы ищете.

аплодисменты

N

0
ответ дан 8 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: