1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/I-TAKE-TODAY-today-framework

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CHANGELOG.md 19 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 16:42 7bf4c10

TODAY Context CHANGE LOG

🍎 A Java library for dependency injection and aspect oriented programing

TODAY Framework v1.0.1

  • Реализована часть функционала WebSocket Netty.
  • Исправлена проблема зависимости yaml в StandardWebEnvironment.
  • Обновление undertow до 2.2.8.
  • Добавлена реализация WebServerAutoConfiguration для автоматической настройки WebServer.

Codacy Badge

Установка

<dependency>
  <groupId>cn.taketoday</groupId>
  <artifactId>today-context</artifactId>
  <version>3.0.5.RELEASE</version>
</dependency>

Текущая версия

v4.0

  • Добавлен загрузчик стратегий StrategiesLoader вместо load META-INFO.

Версия v3.0.6

Версия v3.0.5

  • Исправлена проблема с конфигурацией, когда некоторые конфигурации были пропущены.

Версия v3.0.4

  • Оптимизирован BeanProperty с добавлением TypeDescriptor.
  • Исправлено преобразование null значений в NumberConverter и StringToBooleanConverter.
  • Оптимизирована работа DefaultConversionService с обработкой null значений.
  • Улучшена работа ContextUtils#resolveInitMethod.
  • Повышена производительность EL выражений.

Версия v3.0.3

  • Исправлено handleDependency для предотвращения проблем с параллельным изменением.

Версия v3.0.2

  • Добавлены новые инструменты: BeanProperties, StringToBytesConverter, TypeDescriptor#ofParameter.
  • Решено проблему с прототипом Bean и зависимостями цикла initializeBean.
  • Добавлено свойство IgnoreDuplicates для игнорирования повторяющихся регистраций bean.
  • Добавлены функции throwsWhenReadOnly и BeanPropertyAccessor.
  • Переработан механизм обработки исключений для свойств.
  • Добавлены FunctionConstructor и SupplierConstructor.
  • Обновлён инструмент рефлексии для получения методов getter и setter.
  • Введено новое свойство BeanMapping, аналогичное BeanMap.
  • Устранена логическая ошибка при уничтожении bean.
  • Устаревшие методы SetterSupport и BeanReference удалены.
  • Значительно улучшена AbstractBeanFactory и система рефлексии.
  • Исправлены проблемы с Aop при генерации подклассов без режима перехвата.

Версия v3.0.1

  • Исправлен createObjectFactoryDependencyProxy для работы с неинтерфейсными классами.
  • Удалены устаревшие методы.
  • Исправлена ошибка ParameterFunction.

Версия v3.0.0 (v2.1.7)

2021-4-29

  • Новые возможности: BeanProperty и BeanMetadata для быстрого доступа к свойствам объектов.
  • Расширены возможности EL выражений с помощью handlePropertyNotResolved.
  • Проведена реорганизация Aop с использованием Spring API.
  • Поддержка обобщённых типов.
  • DataBinder для управления данными.
  • Доступ и настройка свойств объектов с помощью BeanPropertyAccessor.
  • Полностью переработана система конвертеров с введением ConversionService.
  • Улучшен процесс инициализации bean для повышения производительности.
  • Исправленные ошибки:
    • Загрузка определения bean может привести к необработанным исключениям.
    • ContextUtils#loadProps() поддерживает только строки.
    • #11 JarEntryResource#getJarFilePath(String) — файл jar не найден.
    • Использование имени метода в качестве имени экземпляра по умолчанию.
    • Переработана логика регистрации FactoryBean.
    • Пересмотрена логика получения bean в BeanFactory.
    • Создание настоящих прототипов экземпляров с использованием cglib.
    • Добавлена поддержка импорта конфигурации (@Import).
    • Удалена classesCache из ClassUtils для использования в среде приложений.
    • ConfigurableBeanFactory получил метод registerBean(BeanDefinition).
    • В ContextUtils добавлен метод loadFromMetaInfo(String) для унифицированной загрузки классов из META-INF.
    • Улучшен DefaultBeanNameCreator для повышения производительности.
    • Стандартные методы BeanDefinition#mergeAnnotations() для объединения аннотаций.
    • Стандартный BeanFactory реализует интерфейс BeanDefinitionLoader как стандартный загрузчик bean, который больше не используется.
    • Оптимизировано получение BeanNameCreator в StandardEnvironment.
    • Автоматическое внедрение свойств с использованием AutowiredPropertyResolver.
    • Ускорено выполнение containsBeanDefinition(Class,boolean) в AbstractBeanFactory.
    • ExecutableParameterResolver для расширения возможностей внедрения конструкторов или методов.
    • Метод Invoker для улучшения функциональности.
    • Исправлена ошибка #13 с неполным сканированием аннотаций.
    • Интеграция с основными журналами для ведения логов.
    • ApplicationEventCapable для расширения функциональности.
    • Возможность установки методов инициализации в BeanDefinition.
    • Предотвращение потенциальных проблем с безопасностью при выполнении EL.
    • Повторное создание экземпляров bean.
    • Поддержка пользовательских пакетов для сканирования компонентов.
    • Поддержка ApplicationContextSupport.
    • Поддержка событий любого типа.
    • Решение проблем циклических зависимостей.
    • Реализация DestructionBeanPostProcessor.
    • Реорганизация с использованием CandidateComponentScanner для загрузки классов.
    • PathMatchingPatternResourceLoader для более гибкой загрузки ресурсов.
    • ClassUtils#getQualifiedMethodName для упрощения работы с методами.
    • Аннотации и ContextUtils оптимизированы для повышения эффективности.
    • Исправлены ошибки с порядком слушателей.
    • Исправление ошибок с META-INFO/beans.
    • Повторная инициализация экземпляров bean.
    • StringUtils#parseParameters() для анализа параметров.
    • Resource и toArray оптимизированы.
    • AntPathMatcher улучшен для ускорения работы.
    • OrderedSupport для упорядочивания операций. Перевод текста на русский язык:

Добавить CandidateComponentScannerCapable:

  • Оптимизация Resource.
  • Увеличение Assert, MultiValueMap.
  • Добавление ImportAware.
  • Интеграция AOP.

Серьёзная переработка:

  • Большая оптимизация кода, переработка, исправление тестового кода.
  • Добавление AbstractFactoryBean.
  • Добавление Spring AttributeAccessor.
  • Добавление BeanClassLoaderAware.
  • Переработка Condition.
  • Добавление BeanFactoryPostProcessor.

Удаление MessageFactory. Новый API отражения.

Исправление ошибки ResourceUtils#getResource при наличии в пути файла экранированных символов. Оптимизация AutoProxyCreator, CandidateComponentScanner, AbstractApplicationContext, PropertyValueResolver, ExecutableParameterResolver, StandardBeanFactory, AbstractCacheInterceptor, AspectsDestroyListener. Добавление Environment#getFlag. Оптимизация ContextUtils#resolveInitMethod. Уменьшение зависимости от Lombok. Оптимизация процесса загрузки. Поддержка внедрения метода Autowired. Оптимизация RedissonCache. Улучшение части Javadoc. Оптимизация сканирования журналов. Оптимизация PathMatchingPatternResourceLoader. Оптимизация AbstractAdvice. Оптимизация cglib. Оптимизация инициализации Environment. Новый API отражения. ClassUtils#ParameterFunction с возможностью включения проверки параметров. Переработка PropertyValueResolver. Исправление findTargetAttributes — устранение бесконечного цикла. Новый интерфейс AutowireCapableBeanFactory. Новое отражение API ReflectionUtils.

v2.1.6

Новые возможности (feat):

  • Добавить новый API Environment для получения свойства.
  • Добавить файл jar-prefix для игнорирования сканирования jar.

Исправленные ошибки (fix):

  • Обеспечить согласованность экземпляра ExpressionFactory.
  • DataSize.parse().
  • Добавить ConcurrentProperties.
  • Получить аннотированные бобы, которые пропустил StandardBeanDefinition.
  • NumberUtils String[].class не может быть разрешён.
  • Полная поддержка Prototype (поддерживает только интерфейс).
  • Полная поддержка жизненного цикла Prototype (уничтожение bean после каждого вызова).
  • Доступ к члену невозможен.
  • Не удаётся получить MethodArgsNames.
  • ELProcessor не обрабатывает.
  • Ленивая загрузка.
  • Нет конструктора.
  • Унификация формата даты.
  • Добавить API Resource.
  • Добавить ResourceFilter для фильтрации Resource.
  • Свойства не найдены.
  • Детализация сообщения ConfigurationException.
  • Добавить TypeConverter, StringTypeConverter API.
  • Перенести jar-префикс в META-INF/jar-префикс.
  • Вложенные классы Props.
  • Инициализация bean не произошла из-за отсутствия последовательности запуска.
  • Новые аннотации: ConditionalOnClass, ConditionalOnExpression, ConditionalOnMissingClass, ConditionalOnProperty, ConditionalOnResource.
  • Ошибка внедрения свойства.
  • NumberUtils#toArrayObject().
  • elManager может быть нулевым.
  • Значение по умолчанию @Value.
  • @Env.
  • META-INF/beans, чтобы избежать сканирования всех файлов jar.
  • Использовать статический метод ContextUtils#getApplicationContext() для получения ApplicationContext.
  • Некоторые слушатели в jar не могут быть загружены.
  • Классы, загруженные из jar, не могут быть загружены.

Выпуск v2.1.6 2019/7/24-1:37.

v2.1.5

Возможности (feat):

  • Добавить состояние контекста.
  • Стандартная среда.addActiveProfile() при добавлении профиля перед загрузкой контекста не работает.
  • Поддержка инъекции Constructor.
  • Настройка контекста события.
  • Улучшение Props.
  • Поддержка el.
  • Когда контекст загружается вручную, некоторые свойства не могут быть загружены.
  • Сообщения el не найдены в пакете ресурсов.

v2.1.4

Устранены некоторые проблемы с инициализацией синглтонов.

v2.1.3

  • Устранена проблема с инъекцией @Props.
  • Синхронизация с центральным репозиторием Maven.

v2.1.2

  • Использование BeanNameCreator для создания имени bean.
  • FactoryBean.
  • Исправлена ошибка: handleDependency(): когда обрабатывается зависимость, некоторое определение bean уже существует.
  • Исключение при возникновении одинаковых имён bean при applyPropertyValues().
  • Добавлены функции initMethods и destroyMethods.
  • Добавлена функция @MissingBean.

v2.1.1

  • Добавлена возможность уничтожения bean.

  • Исправлено #1 — некоторые синглтоны не могли быть инициализированы. v2.1.0

  • Исправление: исправление зависимости BeanPostProcessor.

  • sparkles: добавлена поддержка asm 7.0 в cn.taketoday.asm.

  • feat: добавлена функция @Order Ordered в /src/test/java/test/context/listener.

  • feat: добавлена функция @Conditional в /src/test/java/test/context/profile/ProfileTest.java.

  • feat: добавлена функция @Profile в /src/test/java/test/context/profile/ProfileTest.java.

  • feat: добавлена функция Environment в /src/test/java/test/context/env/StandardEnvironmentTest.java.

Примеры:

@Singleton
@Order(Ordered.HIGHEST_PRECEDENCE)
public class ProxyBeanPostProcessor implements BeanPostProcessor {

}

или

@ContextListener
public class BeanDefinitionLoadedListener_2 implements ApplicationListener<BeanDefinitionLoadedEvent>, Ordered {
    
    @Override
    public void onApplicationEvent(BeanDefinitionLoadedEvent event) {
        log.debug("BeanDefinitionLoadedListener_2");
    }

    @Override
    public int getOrder() {
        return 2;
    }
}

@Profile("test")

@Configuration
public class ConfigurationBean {

    @Prototype
    public User user() {
        return new User().setId(12);
    }

    @Singleton("user__")
    public User user__() {
        return new User().setId(12);
    }

    @Profile("test")
    @Prototype("user")
    public User testUser() {
        return new User().setUserName("TEST");
    }

    @Profile("prod")
    @Singleton("user")
    public User prodUser() {
        return new User().setUserName("PROD");
    }
    
    @Singleton("user_")
    @Conditional(WindowsCondition.class)
    public User windowsUser() {
        return new User().setUserName("Windows");
    }
}

public class WindowsCondition implements Condition {
    @Override
    public boolean matches(ApplicationContext applicationContext, AnnotatedElement annotatedElement) {
        String system = applicationContext.getEnvironment().getProperty("os.name");
        if(system.contains("Windows")) {
            return true;
        }
        return false;
    }
}

@Test
public void test_Profile() {

    try (ApplicationContext applicationContext = new AnnotationConfigApplicationContext(true)) {
        
        User user = applicationContext.getBean("user", User.class);
        System.out.println(user);
        assert "TEST".equals(user.getUserName());
    }
}

@Test
public void test_Conditional() {
    
    try (ApplicationContext applicationContext = new AnnotationConfigApplicationContext(true)) {
        User user = applicationContext.getBean("user_", User.class);
        System.out.println(user);
        assert "Windows".equals(user.getUserName());
    }
}

v2.0.0

  • Добавлен ObjectFactory.
  • Переработана структура фреймворка.

v1.2.1

  • Исправлена ошибка внедрения прототипа.

v1.2.0

  • Поддержка AnnotationApplicationContext для аннотации Configuration.
  • ClassPathApplicationContext заменён на DefaultApplicationContext.
  • Поддерживаются методы с аннотациями bean.

v1.1.1

  • Исправлены проблемы с несоответствием интерфейса и реализации объекта в случае синглтона.
  • Добавлено частичное документирование.
  • Добавлен метод refresh.
  • Добавлены тестовые коды.
  • При внедрении свойств можно выбрать замену префикса, который иногда используется для различения конфигураций.
  • Оптимизировано внедрение, можно настроить собственные аннотации для внедрения.

v1.0.3

  1. Добавлена функциональность FactoryBean.
  2. Добавлен BeanFactoryAware.
  3. Добавлен BeanClassLoaderAware.
  4. Добавлена аннотация PropertyResolver для привязки зависимостей обработчика инъекций.
  5. Добавлена аннотация Props для непосредственного внедрения Properties.
  6. Оптимизирован процесс внедрения зависимостей.
  7. Добавлен BeanPostProcessor.
  8. Добавлен DisposableBean.
  9. Добавлен InitializingBean.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/I-TAKE-TODAY-today-framework.git
git@api.gitlife.ru:oschina-mirror/I-TAKE-TODAY-today-framework.git
oschina-mirror
I-TAKE-TODAY-today-framework
I-TAKE-TODAY-today-framework
master