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

OSCHINA-MIRROR/alexgaoyh-MutiModule-parent

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

maven多模块项目管理,整合spring mybatis,多模块划分:web层,service层,persist层,其他(capthca验证码):

Уже реализован бэкенд-менеджмент с использованием RBAC и интеграцией easyui для выполнения CRUD-функций.

Часть обновления:

  • 20150504:

    • Добавлены файлы шаблонов классов для persist-слоя, использующие mybatis и maven-mybatis-generator плагин.
    • В service-слое созданы FPL и использован Freemarker для генерации кода бизнес-логики.
  • 20150509:

    • Реализована функция кэширования обновлений для операции updateByPrimaryKeySelective с использованием AOP.
  • 20150523:

    • Для persist и service слоёв добавлены функции RBAC для управления правами доступа. Результаты запросов преобразуются в древовидную структуру.
  • 20150225:

    • Создана страница входа для пользователей.
  • 20150526:

    • На странице входа добавлена проверка подлинности. Все запросы к /admin проверяются с помощью listener, чтобы предотвратить доступ без авторизации.
  • 20150527:

    • На странице входа добавлен фильтр для проверки статуса авторизации. В админ-панели реализовано дерево ресурсов с использованием sysmanResource. RedisClient дополнен методами для установки времени истечения ключей. При входе в систему время истечения ключа обновляется, чтобы избежать устаревания кеша после выхода из системы. Также реализована проверка прав пользователя на действия с ресурсами.
  • 20150528:

    • Страница входа переведена на использование session вместо redis для хранения информации о пользователе.
  • 20150601:

    • В persist слое добавлены логические операции удаления SQL. В service слое реализованы общие методы для логических операций удаления. Исправлена проблема с совпадением данных сессии и кеша redis после входа в систему. Реализован RBAC для однотабличных CRUD операций. Планируется реализация реляционных операций.
  • 20150602:

    • Завершена реализация RBAC. Реализованы реляционные операции для sysmanUser-sysmanRole-sysmanResource. Используется jQuery для создания левого и правого меню выбора.
  • 20150608: Для persist слоя используется MapperScannerConfigurer для автоматического создания MapperFactoryBean для каждого bean. Для service слоя используются context:annotation-config и context:component-scan для автоматической настройки beans.

  • 20150623: Создан webapp проект MutiModule-ueditorDemo для демонстрации использования ueditor. Создан quickstart проект MutiModule-uedirotClass с модифицированными java классами и сервлетами для ueditor. Ресурсы ueditor (js/css/image) разделены на два проекта: MutiModule-ueditor и MutiModule-ueditorClass.

  • 20150624: Добавлен модуль MutiModule-logback для централизованной обработки логов.

  • 20150625: В service слое реализован функционал для работы с Redis. Проведено тестирование с использованием SerializablePojoRedisTest.

  • 20150701: Добавлены модули MutiModule-upload и MutiModule-common. MutiModule-service слой использует Redis для хранения данных.

  • 20150704: Модуль MutiModule-upload перемещён в MutiModule-common, а MutiModule-kindeditorClass удалён. Файлы, связанные с загрузкой файлов, перемещены в MutiModule-common.

    Удалён модуль MutiModule-upload, и функциональность загрузки файлов перемещена в MutiModule-kindeditorDemo.

    Файлы, связанные с обработкой файлов, перенесены в MutiModule-kindeditorDemo, где используется ajaxfileupload.js для загрузки файлов.

  • 20150706: Реализована обработка изображений с использованием GraphicsMagick и im4java.

  • 20150709: Разработан класс DesUtilss для симметричного шифрования и дешифрования данных с использованием BASE64DecoderReplace.

  • 20150710: Добавлен модуль MutiModule-citySelect для выбора адресов с использованием jQuery.

  • 20150711: Расширены возможности модуля MutiModule-common с использованием mybatis-generator-maven-plugin для добавления функционала пагинации.

В модуле MutiModule-perisit реализованы дополнительные функции для работы с данными. mybatis-generator-maven-plugin: после генерации файлов, соответствующих структуре таблицы Demo, завершена функция модульного тестирования.

#20150713

С помощью нового плагина mybatis-generator-maven-plugin исправлены несоответствия требованиям (структура таблицы связей — составной первичный ключ, именование полей в стиле «верблюжий регистр»).

mybatis-generator-maven-plugin используется для указания атрибутов автоматического создания первичного ключа (поля identity или sequences). Если этот элемент указан, MBG вставляет элемент в сгенерированный файл SQL-отображения insert.

XmlParserUtilss использует dom4j для обработки XML и предоставляет общие методы.

#20150714

Поддержка методов XmlParserUtilss. Добавлен метод генерации строки XML, см. раздел модульных тестов GenerateXMLTest.

#20150715

В XmlUtilss добавлен метод для анализа элементов тегов XML.

#20150717

Модуль MutiModule-web определён как модуль для бэкенд-управления, обеспечено разделение между фронтенд и бэкенд модулями, а также внесены изменения в часть запроса ссылок, чтобы удалить ненужный admin. Интегрированы функции kindeditor в модуль MutiModule-web, при этом различается пространство файлов разных пользователей, что предотвращает доступ других пользователей к файлам, загруженным одним пользователем, и их использование.

fileUpload?contextPath=admin&detailPath=anonymous fileManager?contextPath=admin&detailPath=1

Для загрузки файлов и управления файлами реализованы два сервлета, которые передают следующие параметры:

  • contextPath — используется для разделения контекста проекта и вызова метода в разных модулях, например, передача admin указывает на то, что это функция загрузки файла в бэкенд;
  • detailPath — после разделения уровня модуля проекта необходимо различать функции загрузки файлов для разных пользователей. Например, если передано 1, это означает, что пользователь с id = 1 загрузил файл, а если передано anonymous, это означает анонимного пользователя.

#20150718

Исправлена ошибка, из-за которой файл стиля не загружался при входе на главную страницу: Resource interpreted as Stylesheet but transferred with MIME type text/html. Добавлена функция перенаправления по умолчанию в файле index.jsp.

#20150721

Шаблон URL, соответствующий файлу фильтра веб-модуля LoginFilter, установлен как /*, и установлены параметры фильтрации URL (init-param), чтобы предотвратить ненужную фильтрацию ресурсов. Исправлена часть ошибки.

#20150722

В веб-модуле, http://127.0.0.1:8080/MutiModule-web/demo/page/5, в классе контроллера DemoController.java добавлена функция разбиения на страницы для интерфейса, добавлен плагин jquery.jqpagination.js для разбивки на страницы и выполнена обработка функций.

#20150723

Добавлен класс для чтения файлов конфигурации, который считывает содержимое файла конфигурации и помещает его в кэш. Для получения значения из файла конфигурации достаточно вызвать метод getXXX(). Добавлен файл sso.properties для чтения конфигурации файла sso для одноточечного входа в систему. Добавлены три подмодуля webapp: ssoAuth, ssoDemo1 и ssoDemo2 для реализации функции одноточечной аутентификации. При локальном тестировании необходимо изменить конфигурацию зависимого общего модуля в файле sso.properties и загрузить три элемента webapp в путь Tomcat. ssoAuth: модуль проверки подлинности для одноточечного входа. В настоящее время для успешного входа требуется только совпадение имени пользователя и пароля. ssoDemo1: клиентский терминал одноточечного входа 1. http://127.0.0.1:8080/MutiModule-ssoDemo1/userCenter ssoDemo2: клиентский терминал одноточечного входа 2. http://127.0.0.1:8080/MutiModule-ssoDemo2/userCenter

#20180724

Добавлена часть модульного теста BinaryTest, использующая двоичные данные, где каждая цифра представляет различную информацию о пользователе. Обратите внимание, что сохранение информации о пользователе ограничено количеством битов Integer, которое нельзя произвольно расширить. Если расширение слишком велико, можно рассмотреть возможность использования типа String для хранения чисел.

#20150725

Добавлены базовые географические данные (провинция, город, район) в базу данных, связанные с persist/service, завершены модульные тесты для selectByPrimaryKey. На следующем этапе будет поддерживаться управление провинцией, городом и районом в веб-модуле (CRUD).

#20150727

Завершена функция асинхронной загрузки древовидной структуры zTree в веб-модуль для базовых географических данных (провинция, город, район). На следующем шаге будет реализована функция CRUD. В persist-слое generatorConfig.xml добавлены два параметра настройки beginningDelimiter и endingDelimiter, чтобы заменить символы по умолчанию («) в сгенерированном файле sql.xml. Это уменьшает необходимость ручного изменения * .xml файлов после каждого использования инструмента генерации кода для удаления символов «».

#20150728

Исправлено началоDelimiter и окончаниеDelimiter для создания проблем со старыми кодами. Реализована функция поиска условий в бэкенде веб-модуля.

#20150730

Интеграция модуля lucene требует дальнейшей оптимизации. Добавлены функции прямого доступа к базе данных в persist-слое для выполнения операций с сущностями (индексация файлов и разбиение на страницы с высоким уровнем поиска).

#20150801

Добавлены модули MutiModule-lucene. LuceneIncreTest.java (операции инкрементного индексирования), LuceneUpdateTest.java (операции обновления индекса) и LuceneDeleteTest.java (операции удаления индекса). Исправлены устаревшие коды в MutiModule-persist: beginningDelimiter и endingDelimiter не были настроены, вызывая проблемы. addCriterion(""id" >=", value, ""id"") изменено на addCriterion("id >=", value, "id"). Добавлены DemoTransientListStringTest и DemoTransientEnumTest для модульных тестов. Они могут сохранять несколько путей к изображениям в формате JSON и могут сохранять и извлекать данные enum в формате JSON соответственно.

#20150803

Добавлен статический модуль MutiModule, который завершает настройку статических ресурсов (js/css/image и т. д.) в этом модуле. Статические ресурсы отделены от динамических для подготовки к разделению. Модульные тесты см.: MutiModule-ssoAuth, MutiModule-ssoDemo1, MutiModule-ssoDemo2 и MutiModule-static. Глобальный перехватчик добавлен в веб-слой для увеличения охвата context_ и уменьшения количества кода jsp. В persist layer generatorConfig.xml добавлено поле deleteFlag типа enum, и завершено соответствующее модульное тестирование.

#20150804

Информация о контексте не включена. Веб-слой, бэкенд easyUI: использование новых страниц вместо диалоговых окон

Подробности см. в файле DemoController.java веб-слоя.

Дальнейшие шаги:

  • Завершить выделение easyui_dataGrid_blank_extend.js. Доработать отображение данных и некоторые общие функции.

  • Изменить пул соединений с базой данных, использовать Druid. Добавить некоторые функции мониторинга. Подробности см. в разделе сервлетов файла web.xml веб-модуля.

  • Информация о мониторинге, отображаемая StatViewSerlvet, является чувствительной. Это внутренняя информация о работе системы. Если вам необходимо контролировать доступ, вы можете настроить параметры allow и deny.

  • Настроить защиту от SQL-инъекций для слоя персистентности Druid.

  • Зашифровать пароль базы данных в слое персистентности Druid.

  • Добавить функции CMS-модуля;

  • В модуле MutiModule-common увеличить функциональность распределённого первичного ключа (стратегия генерации первичного ключа Twitter/Snowflake). Завершить юнит-тестирование. См. метод IdWorkerTest.testIdWorkerInstance().

  • Обратите внимание, что в разных распределённых средах необходимо использовать разные конфигурации файла idWorker.properties. В противном случае может возникнуть ситуация дублирования первичных ключей.

  • Реализовать и пройти тестирование кода JAVA SPI.

  • Создать модули MutiModule-Dubbo-RWSeperator-*. Протестировать создание распределённой системы Dubbo.

    • API-модуль — это выделенный интерфейсный модуль. Обратите внимание на разделение модулей чтения и записи.

    • Модуль персистентности — это уровень постоянного хранения данных.

    • Бизнес-уровень разделён на два модуля: чтение и запись. С точки зрения бизнес-логики интерфейсы чтения и записи разделены на разные модули. Это обеспечивает разделение интерфейсов чтения и записи при последующем обслуживании и облегчает горизонтальное расширение (на уровне кода и базы данных).

    • Структура модулей:

      • MutiModule-Dubbo-RWSeperator-consumer-web
        • MutiModule-Dubbo-RWSeperator-api
          • MutiModule-Dubbo-RWSeperator-persist

      && //

      • MutiModule-Dubbo-RWSeperator-provider-write
      • MutiModule-Dubbo-RWSeperator-provider-read
        • MutiModule-Dubbo-RWSeperator-api
          • MutiModule-Dubbo-RWSeperator-persist
    • Изменения в этой структуре:

      1. Выделен API-модуль (интерфейс разделен на интерфейсы чтения и записи для облегчения разделения чтения и записи на уровне базы данных).
      2. API-модуль зависит от модуля персистентности (постоянного хранения данных).
      3. И поставщики, и потребители Dubbo зависят от API-модуля, а API-модуль, в свою очередь, зависит от модуля персистентности. Таким образом, модули персистентности и API выделены отдельно для повторного использования.
      4. Поставщик услуг Dubbo использует DataSourceTransactionManager для управления транзакциями. Управление транзакциями осуществляется в модуле поставщика услуг.
      5. Потребитель услуг Dubbo отвечает за представление данных. Здесь происходит взаимодействие с интерфейсом для выполнения операций с данными и их отображения.
    • Поставщик услуг добавляет некоторые функции мониторинга Druid. Добавлены только некоторые функции мониторинга, которые могут быть настроены в соответствии с требованиями бизнеса.

  • Написать генератор кода для модулей MutiModule-Dubbo-RWSeperate-*, чтобы уменьшить объём повторяющегося кода, написанного вручную. Создать код для sysmanUser и sysmanRole. Тестирование прошло успешно.

  • Использовать шаблон inspinia+ для модуля MutiModule-Dubbo-RWSeperate-consumer-web. Интегрировать функции входа и меню слева (максимально три уровня меню). Продолжение следует...

  • Включить декоратор sitemesh. Выделить общие части страниц для последующего отображения. Позже сосредоточиться на отображении страниц, связанных с бизнесом.

  • Следующие шаги включают добавление AOP. Часть данных левого меню будет отображаться в AOP.

  • Далее добавить класс BaseController для выделения общих методов. Достаточно унаследовать этот метод, чтобы реализовать простые функции CRUD.

  • Модуль MutiModule-Dubbo-RWSeperate-consumer-web:

    • Настройка контроллера: если путь соответствует manager/, то используется конфигурация sitemesh.
    • Контроллер расширяет BaseController, то будет использоваться конфигурация AOP (отображение данных левого меню).
    • Com.alexgaoyh.MutiModule.Dubbo.RWSeperate.consumer.web.aop.LeftMenuDataAop.
  • Реализация функций списка. Завершены только функции отображения данных списка (с использованием шаблона inspinia, данные списка отображаются при обновлении страницы).

  • Интеграция функций разбивки на страницы в модуль Dubbo-RWSeperate-consumer-web (используя шаблон inspinia):

    • Реализация событий, соответствующих условиям фильтрации и отображения данных, а также функциям подкачки и обновления страницы.
  • Простая реализация WebSocket (на основе spring4.x):

    • Браузер может установить соединение с сервером и отправлять и получать данные через уже установленное соединение без дополнительных накладных расходов HTTP-протокола.

    • Доступ к http://192.168.60.134:8080/MutiModule-WebSocket/start для подключения. После этого введите два целых числа и нажмите кнопку Send to Add, чтобы отправить запрос на сервер.

    • Сервер получает запрос и возвращает результат, который отображается на странице.

    • Можно рассматривать как своего рода длительное соединение, которое не требует дополнительных затрат из-за HTTP-протокола во время соединения.

    • Примечание: в этом примере файл web.xml почти пуст. В версии spring 4.x примеры кода на GitHub показывают, что файл web.xml практически пуст, и конфигурация XML заменяется аннотациями для уменьшения объёма написания файлов конфигурации XML. В этом примере используется этот подход, который требует простого понимания.

  • Создание связи между Echarts и WebSocket:

    • Echarts инициализируется на странице, клиент (браузер) напрямую устанавливает длинное соединение с сервером. Впоследствии сервер активно отправляет сообщения клиенту, и страница Echart начинает обновляться.

    • Демо:

      • http://127.0.0.1:8080/MutiModule-echarts/init для инициализации страницы Echart, которая отображает значок на странице.
      • Откройте другую страницу и перейдите по адресу http://127.0.0.1:8080/MutiModule-echarts/send, чтобы сервер активно отправил сообщение клиенту. Затем вы увидите, что содержимое соответствующей страницы init изменилось.
    • Таким образом решается проблема взаимодействия между Echarts и WebSocket, и можно управлять отображением содержимого клиентской страницы с помощью сервера.

  • Изменение версии в pom.xml: org.apache.maven.plugins maven-compiler-plugin 2.5

  • Добавление в файл generatorConfig.xml: <columnOverride column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
    Конфигурация;

Предотвратить MySQL в процессе использования от потери точности (часы, минуты, секунды);
И исправить проблемы, которые были в структуре трёх таблиц sysmanUser, sysmanRole и sysmanResource;
Исправить: в mapper.xml файле jdbcType изменить с Date на #{createTime,jdbcType=TIMESTAMP}.

2016010
comsumer-web модуль: добавить в список на странице list следующие JS и CSS; решить проблему адаптации под маленькие экраны и мобильные устройства; реализовать адаптивную вёрстку для списка страниц.

Согласовать больше, чем настроить, согласовать структуру пакета и правила именования.

20160103
Добавить модуль MutiModule-Hadoop для простого тестирования функций Hadoop, на данном этапе реализована простая функция подсчёта количества раз.

20160124
Добавить Dubbo-RWSeperate модуль: часть запуска Jetty;
добавить плагин json2.js для решения проблемы разбора JSON на стороне клиента;
добавить плагин jquery.cookie.js для решения проблемы работы с cookie на стороне клиента. На стороне клиента для эффективного использования cookie создан объект для хранения нескольких значений cookie, решая проблему ограничения количества cookie (также необходимо учитывать ограничение размера cookie).

20160226
Comsumer-web модуль: добавлен класс BaseEmptyController для решения проблем с AOP (LeftMenuDataAop), когда некоторые методы не требуют зависимости от BaseController.
Класс public class BaseController расширяет BaseEmptyController.

Consumer-web модуль: если нет соответствующих прав, то левое меню не отображается.

20160229
Consumer-web модуль: исправлена ошибка в таблице sys_sysmanresource, связанная с сохранением данных в поле parent_ids.
Исправлена ошибка в файле jquery.metisMenu.js, которая приводила к повторному отображению меню.
Код:
$('#li-' + leftMenuId).addClass("active");
$('#li-nav-second-' + leftMenuId).addClass("active");
$('#ul-nav-second-' + leftMenuId).addClass("collapse in");
$('#ul-nav-third-' + leftMenuId).attr('aria-expanded', true);
$('#ul-nav-third-' + leftMenuId).addClass("collapse in");
$('#li-' + leftMenuId + ' .collapse').removeClass("collapse" );

20160301
Common модуль: добавлены операции с базой данных файлов для реализации функций CRUD с использованием файлов в качестве ресурсов.
FileDatabaseHelperTest — это тестовый файл для получения информации из консоли и выполнения операций CRUD.

20160302
Common модуль: добавлена простая реализация алгоритма согласованного хеширования.
Файл класса com.MutiModule.common.utils.hash.ConsistentHash.

20160307
Добавлен модуль MutiModule-simpleRPC для реализации простой функции RPC с использованием динамического прокси (java.lang.reflect.Proxy) и программирования сокетов.
Включает в себя модульные тесты RpcConsumer и RpcProvider.

Consumer-web модуль: на странице входа добавлено перенаправление на страницу, которую пользователь хочет посетить после входа.
Данные левого меню отображаются без зависимости от cookie, чтобы предотвратить проблемы с отображением при смене браузера.
Логика обработки находится в AOP, файл LeftMenuDataAop.java.

Common модуль: добавлено преобразование коллекции объектов в структуру свойств.
В пакете com.MutiModule.common.treeNode в папке /src/test/java.
Подробности см. в ToTreeNodeTest.java для модульных тестов.

20160308
Dubbo-consumer модуль: добавлены разрешения на уровне кнопок.
Решение: в конфигурации ресурсов на сервере добавлены разрешения на уровне кнопок, и они назначаются при распределении ролей.
Важно, чтобы имена кнопок в интерфейсе соответствовали именам ресурсов, что позволяет контролировать доступ на основе уровня кнопок.

Dubbo-persist модуль: обновлены файлы базы данных.

Модули Dubbo-consumer, Dubbo-provider-read и Dubbo-provider-write:
извлечена конфигурация XML <dubbo:registry protocol="zookeeper" address="192.168.2.211:2181" /> из модулей и помещена в модуль Dubbo-api, уменьшая дублирование кода.

2060310
В модуле Dubbo-consumer с разрешениями на уровне кнопок нельзя использовать разрешения на уровне кнопок.

SpringMVC поддерживает UTF-8 для китайского языка. Если SpringMVC возвращает строку String, могут возникнуть проблемы с кодировкой китайских символов. Можно использовать следующий код:

@RequestMapping(value = "/utf8Test", produces = "application/json; charset=utf-8")
@ResponseBody
public String utf8Test() {
Map<String, String> map = new HashMap<String, String>();
map.put("alexgaoyh", "中国");
return JSONUtilss.toJSon(map);
}

Если есть метод, подобный описанному выше, и он вызывается через браузер, китайские символы могут отображаться некорректно. В этом случае необходимо обратить внимание на раздел produces = "application/json; charset=utf-8".

20160311
Следующий шаг — определить, можно ли реализовать функцию бесконечного уровня для операций меню.

20160321
Обновлён пакет org.json.json, в common модуле добавлен метод преобразования строки XML в строку JSON.

20160318
Для модулей Dubbo-* добавлена поддержка CRUD для одного ко многим.
Обратите внимание на формат SQL для правой стороны, выполнение MySQL может вызвать проблемы: delete mutidatabase a.

20160319
Добавлена зависимость CFX для решения проблемы прямого вызова веб-сервиса в модульном тесте com.MutiModule.common.soap.cfx.CFXWebServiceTest.

20160321
Модуль Dubbo-consumer: добавлена многосторонняя операция CRUD, включая обработку удаления.

20160322
Модуль Dubbo-consumer: исправлены ошибки, связанные с неудачным запросом данных при отсутствии значения в нескольких сторонах и исключением nullpointer при использовании цикла for.
Модуль Dubbo-write: исправлена проблема с удалением данных на нескольких сторонах.
Зависимость модуля MutiModule-upload: решена проблема с операцией загрузки изображений, используя функциональность webuploader. Дуббо-персист модуль: стандартизация структуры таблиц

sys_sysmanuser — sys_sysman_user, используется режим разделения слов с помощью подчёркивания.

Файлы базы данных уже отправлены в модуль Dubbo-RWSeperate-persist.

Модуль Dubbo-RWSeperate-

Все таблицы, связанные с фоновым RABC, обрабатываются и преобразуются с использованием пользовательского универсального метода; локально расширен плагин mybatis-generator для создания пользовательских плагинов для обработки базовых функций. В случае появления новых бизнес-логик этот пользовательский плагин будет расширен повторно.

Дуббо-RWSeperate-*, модуль:

Свойства поля ID изменены на строковый тип. Свойства поля createTime изменены на строковый тип. Это в определённой степени решает проблему независимости базы данных. Следует отметить, что на текущем этапе для обеспечения проблемы часового пояса формат времени в базе данных хранится в формате времени зоны 0 (GMT), а после запроса данные автоматически преобразуются в формат времени часового пояса системы.

GMT — это аббревиатура от Greenwich Mean Time, что означает время по Гринвичу.

Изменения в базе данных, скрипт для просмотра doc-папки модуля persist.

Dubbo-RWS-*, модуль:*

Реализована функция асинхронной загрузки больших объёмов данных для модуля zTree информации о провинциях, городах и районах. Реализована функция преобразования IP-адресов в географические названия: библиотека отображения IP-адресов на географические названия (см. комментарии к классу IP2RegionUtilss в модуле common).

Dubbo-RWS-persist: добавление пользовательских аннотаций в классы model*

Для последующей реализации прав доступа к данным в процессе генерации классов model добавлены части кода для генерации пользовательских аннотаций.

Dubbo-RWSeperate-provider-read, модуль:

Добавлены аннотации AOP для тестирования решения проблем с правами доступа к данным. Обратите внимание на файлы классов в пакете com.alexgaoyh.MutiModule.Dubbo.RWSeperate.provider.read.dataAuthority.annotation. Один из них предназначен для методов (method) и указывает, что для этого метода требуется установить права доступа к данным, которые необходимо добавить перед выполнением. Другой предназначен для классов (class) и указывает, что этому классу требуется дополнительная настройка прав доступа к данным, где className используется для хранения абсолютного пути реального связанного класса сущности.

Используя метод AOP, соответствующие данные конфигурации прав доступа динамически загружаются в параметры ввода перед выполнением метода service. Способ использования: добавьте DataAuthorityMethodAnnotation в часть реализации метода service, который требует внедрения прав доступа к данным; добавьте DataAuthorityClassAnnotation в класс реализации service (и одновременно добавьте часть className (абсолютный путь класса сущности)) и добавьте соответствующие аннотации SqlModelVO, см. файл класса com.alexgaoyh.MutiModule.Dubbo.RWSeperate.provider.read.dataAuthority.aspect.test.vo.DictDictionaryVOUtilss, можно протестировать через тестовый пример DictDictionaryTest.

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

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

Введение

Дуббо: реализация платформы управления для распределённой инфраструктуры (RBAC); реализация обработки файлов индекса Lucene; единый модуль загрузки (upload); модуль компилятора Kindeditor/Ueditor; модуль единого входа (SSO) с использованием cookie для записи сессии. Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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