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

OSCHINA-MIRROR/nepxion-Matrix

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Nepxion Matrix — это AOP-фреймворк, который интегрирует три механизма Spring: AutoProxy, Registrar и Import Selector. Он отличается высокой универсальностью, надёжностью, гибкостью и удобством использования.

Spring AutoProxy

Механизм Spring AutoProxy объединяет проксирование интерфейсов (Spring) и классов (CGLIB). Аннотации можно размещать на интерфейсах, классах или методах. Это позволяет легко реализовать сложные прокси-сервисы для интерфейсов или классов.

Особенности:

— Реализует универсальные прокси и дополнительные прокси. — Позволяет использовать как проксирование интерфейса, так и проксирование класса в одном процессе. — Быстро сканирует аннотации на интерфейсах и методах и предоставляет их для реализации бизнес-логики. — Поддерживает режимы «только сканирование» и «сканирование с проксированием». — Может сканировать только интерфейсы или классы, а также только методы или все сразу. — Можно настроить проксирование нескольких аннотаций. — Разрешает использование нескольких перехватчиков для вызова методов. — Автоматически подключает перехватчики (поддерживается версиями Spring 4.3.X и выше). — Позволяет вызывать собственные методы аннотирования для достижения эффекта аспекта. — Предоставляет два способа вызова: автоматическое подключение и AopContext.currentProxy(). — Сканирует только указанные каталоги или сканирует все каталоги. — Получает имена переменных метода, соответствующего аннотации, используя стандартные возможности отражения или библиотеку ASM (ASM library).

Для использования стандартных возможностей отражения необходимо установить параметр компилятора "-parameters" в IDE и Maven.

Spring Registrar

Реализует динамическое проксирование и внедрение зависимостей, подобно аннотации @FeignClient.

Если есть только интерфейс без реализации, то выполняется соответствующий аспектный вызов. Если есть интерфейс с реализацией, то используется логика реализации.

Spring Import Selector

Позволяет автоматически инициализировать соответствующую конфигурацию при добавлении аннотации @EnableMyAnnotation к точке входа. Данный класс описывает логику, согласно которой, если на каком-либо методе целевого интерфейса или класса появится аннотация MyAnnotation2, то все методы этого интерфейса или класса будут просканированы и проксированы. Также для этого интерфейса или класса будет определён конкретный класс-посредник — MyInterceptor2.

@Component("myAutoScanProxyForMethod") public class MyAutoScanProxyForMethod extends DefaultAutoScanProxy { private static final long serialVersionUID = -481395242918857264L;

private static final String[] SCAN_PACKAGES = { "com.nepxion.matrix.proxy.simple" };

@SuppressWarnings("rawtypes")
private Class[] methodAnnotations;

@Autowired
private MyInterceptor2 myInterceptor2;

private Object[] myInterceptor2Array;

public MyAutoScanProxyForMethod() {
    super(SCAN_PACKAGES, ProxyMode.BY_METHOD_ANNOTATION_ONLY, ScanMode.FOR_METHOD_ANNOTATION_ONLY);
}

@Override
protected Object[] getAdditionalInterceptors(Class<?> targetClass) {
    if (targetClass == MyService2Impl.class) {
        return getMyInterceptor2Array();
    }
    return null;
}

private Object[] getMyInterceptor2Array() {
    if (myInterceptor2Array == null) {
        myInterceptor2Array = new Object[] { myInterceptor2 };
    }
    return myInterceptor2Array;
}

@SuppressWarnings("unchecked")
@Override
protected Class<? extends Annotation>[] getMethodAnnotations() {
    if (methodAnnotations == null) {
        methodAnnotations = new Class[] { MyAnnotation2.class };
    }
    return methodAnnotations;
}

@Override
protected void methodAnnotationScanned(Class<?> targetClass, Method method, Class<? extends Annotation> methodAnnotation) {
    System.out.println("Method annotation scanned, targetClass=" + targetClass + ", method=" + method + ", methodAnnotation=" + methodAnnotation);
}

}

Для более сложного использования обратитесь к коду в каталоге com.nepxion.matrix.proxy.complex.

Пример механизма Spring Registrar

См. matrix-spring-boot-registrar-example.

Пример механизма Spring Import Selector

См. matrix-spring-boot-selector-example.

Пожалуйста, свяжитесь со мной через WeChat, DingTalk, официальный аккаунт или документацию.

График популярности проекта Star

Stargazers over time

Комментарии ( 0 )

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

Введение

Nepxion Matrix — это AOP-фреймворк, интегрированный с Spring AutoProxy, Spring Registrar и Spring Import Selector. Он обладает высокой универсальностью, надёжностью, гибкостью и удобством использования для бизнес-сценариев, ориентированных на аннотации, включая проксирование, перехват и переключение. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/nepxion-Matrix.git
git@gitlife.ru:oschina-mirror/nepxion-Matrix.git
oschina-mirror
nepxion-Matrix
nepxion-Matrix
master