0.3.1 --> 0.3.2
По умолчанию DefaultParamHandler не мог правильно обрабатывать привязанные типы логикой, что было исправлено.
TypeWireHandler повторно выполнял операцию внедрения при работе с объектами, обработанными TypeDefaultHandler (TypeDefaultHandler создает новый цепочку обработчиков HandlerChain, в которой также находится TypeWireHandler), что было исправлено.
Автоматическая регистрация могла потерпеть неудачу при вызове AutoWire.get(...)
, что было исправлено.
Теперь методы AOPController.weave, TypeAnnotationHandler, ParamAnnotationHandler, IOCController.get получили дополнительный параметр, представляющий "тип, который ожидался изначально".
Метод AOPController.weave теперь принимает RFunc0 вместо объекта, например AOPController.weave(() -> obj, obj.getClass())
.
Изменены некоторые документы.
0.2.2 --> 0.3.1
Сессия Session переименована в область действия Scope (включая аннотации @Session и SessionAware, которые были переименованы в @ScopeAttr и ScopeAware соответственно). Теперь все объекты, зарегистрированные в IOCController, должны быть зарегистрированы в IOCController.rootScope, за исключением обработчиков.
Удалена аннотация SetterAnnotationHandler; все вызовы сеттеров теперь берутся под контроль ParamAnnotationHandler.
Аннотация Use была изменена на @Use(value: String, cls: Class). Либо значение либо класс могут использоваться, но если они оба существуют, то используется значение.
Аннотация Default была изменена на @Default(value: Class). Значение представляет собой тип, который требуется проинициализировать.
Каждая аннотация теперь имеет метку @Inherited.
Интерфейс ScopeAware перемещён в пакет ioc и теперь использует setter для внедрения области действия. В реальности, любой тип, который является областью действия, может использовать этот подход для внедрения области действия.
Внедрение будет происходить только тогда, когда есть аннотация @Wire. Если @Wire указана на типе, то будут внедрены все сеттеры и поля с @Wire. В других случаях будут внедрены только указанные сеттеры и поля.
Теперь поддерживаются прямые внедрения в поля, просто добавьте аннотацию @Wire к полю.
Теперь можно не добавлять @Wire к классу, а добавить его к полям или сеттерам, или добавить @Invoke к методам. Это позволит выбрать поля или сеттеры для внедрения, или выбрать методы для выполнения.
Аннотация @ScopeAttr может иметь параметр thread=true, что позволяет добавить значение в Scope.currentThreadScope().
0.2.1 --> 0.2.2
Аннотация @Force ранее не могла корректно обрабатывать небазовые типы. Это было исправлено.
В AOPController был найден баг, который был исправлен.
Типы и параметры ранее не могли корректно обрабатывать автоматическое упаковывание типов. Это было исправлено.
Несколько методов в IOCController помечены как @Deprecated:
Используйте registerVariable(String, RFunc1)
вместо них.
По умолчанию поведение Weavers, которые не переопределяют метод doException, было изменено на выбрасывание исключения. Weaver и LoggedWeaver считаются специализированными и не затрагиваются этим изменением.
Теперь вы можете регистрировать объекты типа Map<Object, Object> (родительский тип для Properties) в IOCController и использовать аннотацию @Force для указания свойства properties и значения value для конкретной конфигурации.
Пример:
properties
address = 127.0.0.1
port = 23333
Java
Properties config = new Properties();
config.load(Class.forName("X").getResourceAsStream("/config.properties"));
IOCController.registerProperties("config", config);
@Force(properties = "config", value = "address")
public void setAddress(String address) {...}
@Force(properties = "config", value = "port")
public void setPort(int port) {...}
Если ни один обработчик не был зарегестрирован до начала внедрения, то будет автоматически вызван метод autoRegister
и выполнен метод closeRegistering
.
0.1.3 --> 0.2.1
Классы, аннотированные @Singleton, ранее не могли использовать аннотацию @Wire. Это было исправлено.
Добавлена новая сущность Session, которая проходит через весь процесс одного внедрения AutoWire.wire(o). Подробнее см. документацию.
Weaver был переименован в LoggedWeaver, и теперь предоставляется интерфейс Weaver для выполнения операций внедрения.
Для всех Weavers, реализующих интерфейс TargetAware, метод будет вызван после получения экземпляра мывера с использованием прокси-объекта в качестве аргумента.
Для всех Weavers, реализующих интерфейс SessionAware, метод будет вызван после получения экземпляра мывера с использованием текущего сеанса IoC в качестве аргумента.
Для объектов без интерфейсов теперь автоматически используется cglib, нет необходимости явно устанавливать useCglib=true.
Некоторые старые строки объединения в log4j были заменены на шаблоны слеш-слеш-слеш {} в slf4j.
Некоторые ошибки в документах и журналах были исправлены.
0.1.2 --> 0.1.3
Предоставлена поддержка Maven.
Logger теперь использует slf4j.
Используется новая версия Style функционального набора инструментов.
Переменные теперь управляются с помощью Supplier. Также поддерживаются Method и Field.
0.1.1 --> 0.1.2
AOP теперь поддерживает Cglib. Добавьте следующее к аннотации AOP:
useCglib = true
0.0.2 --> 0.1.1
Аннотация Extend имела программную ошибку во время разработки, что делало её недействительной. Эта ошибка была исправлена.
При использовании Style инструментария ранее использовалось наследование, теперь используется импорт статических методов.
AOP Теперь вы можете использовать Pure.IoC для работы с AOP.
Добавьте аннотацию @AOP({Class, ...}) к вашему типу с интерфейсом, затем при внедрении Pure.IoC или при прямом вызове AOPController.weave(экземпляр типа) будет создан и получен прокси-объект.
Смотрите документацию для получения более подробной информации.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )