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

OSCHINA-MIRROR/mvilplss-nature-framework

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

Природа-фреймворк: краткое описание

Природа-фреймворк — это лёгкая и свободная среда разработки, которая ориентирована на простоту использования, лаконичность кода, быструю разработку, мощные функции, лёгкую расширяемость и низкую связанность. Она подходит для быстрой разработки облегчённых MVC+ORM фреймворков. В ней нет методов getter/setter, нет конфигурации XML, а размер исходного кода в виде jar составляет всего 280 КБ.

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

  • полная поддержка MVC;
  • естественная модульная структура: Control, Service, Model;
  • простой в использовании механизм внедрения зависимостей (ioc);
  • мощный перехватчик (intercepter), который превосходит Struts;
  • валидаторы на стороне сервера, поддерживающие интернационализацию (i18n);
  • токены для предотвращения повторных представлений;
  • гибкие и удобные локальные кэши Ecache и мощные распределённые кэши Redis;
  • поддержка c3p0 и druid для источников данных, а также возможность подключения к нескольким базам данных в одном проекте;
  • более простая в использовании, чем Hibernate, обработка баз данных, включая автоматическое создание таблиц;
  • базы данных: MySQL, Microsoft SQL Server, Oracle, Sqlite и другие;
  • обязательный контроль транзакций, многопользовательский контроль транзакций;
  • мощные плагины для расширения;
  • RESTful-стиль запросов, более удобный, чем Springmvc;
  • облегчённые веб-сервисы;
  • распределённое планирование задач;
  • проверка разрешений на основе Freemark и jsp на передней панели.

Зависимости Maven:

<dependency>
   <groupId>org.nature4j</groupId>
   <artifactId>nature-framework</artifactId>
   <version>1.0.5</version>
   <optional>true</optional>
 </dependency>

Последние улучшения:

  1. Улучшены тестовые примеры. Для этого достаточно унаследовать класс NatureTest.
  2. Добавлена поддержка передачи транзакций. Теперь можно использовать методы вставки и обновления в рамках одной транзакции.
  3. Встроенный инструмент Hessian для распределённых вычислений.
  4. Повышена безопасность фреймворка.

Как использовать: Для быстрого старта есть три примера:

  • Быстрый старт за три минуты (для новичков).
  • Полноценный пример с множеством функций (для тех, кто уже знаком с фреймворком).

Пример сущности: Сущность не требует методов GET/SET. Нужно только указать имена полей базы данных. Можно использовать аннотации для управления первичными ключами (@id), которые поддерживают ADDSELF (автоматическое увеличение базы данных), UUID (управление фреймворком) и ASSIGN (идентификатор, указанный программистом).

Также можно использовать @Type для указания типа поля в соответствии с базовыми типами Java. Поддерживаются значения по умолчанию, длина и т. д.

Пример класса User:

@Table(name = "tb_user")
public class User extends NatureMap {

    @Id(strategy = Strategy.ADDSELF)
    @Type(type = Types.INT)
    public String id = "id";

    @Type(type = Types.INT)
    public String age = "age";

    @Type(def = "女")
    public String sex = "sex";

    public String name = "name";
    
    @Type(length="300")
    public String address = "address";

}

Сервис: Можно наследовать от класса NatureService для упрощения разработки. Добавить аннотацию @Service. Транзакции можно быстро реализовать с помощью @Tx. Если бизнес-логика включает больше чтения и меньше записи, рекомендуется использовать кэш. Просто передайте имя кэша. Если есть конфигурация кэша, используйте её, иначе используйте настройки по умолчанию. Все бизнес-правила должны быть реализованы в слое сервиса. Текст 1

String sql = "select id, name, sex, age from tb_user where 1=1 order by id desc";
return DatabaseHelper.query(page, sql, "user_cache");
}

@Tx
public int delete(NatureMap natureMap) {
    return super.delete(natureMap, "user_cache");
}

Текст 2

Контрольный класс

  1. Создайте контрольный слой, унаследовав класс NatureCtrl и добавив аннотацию @Ctrl.
  2. Пространство имён класса @Ctrl — это пространство имён контрольного слоя, все запросы этого контрольного слоя должны проходить через namespace.
  3. Атрибут @Inject — это аннотация внедрения экземпляра Service.
  4. Метод @Ask — это отображение метода, если не указано url, то по умолчанию отображается как имя метода; вместе с namespace они образуют путь запроса /namespace/list.
  5. Возвращаемые значения могут быть страницей «xxx.jsp», методом «xxx», данными JSON JsonData или файлом для скачивания FileData. Это очень просто и быстро.
  6. В контрольном слое, если нужно передать значение на страницу, достаточно объявить переменную публичного типа. Не нужно писать длинные GET/SET.
  7. Если нужно загрузить файл, в контрольном слое можно просто объявить переменную типа File. Поддерживается загрузка нескольких файлов, это так же просто, как и получение обычных переменных.
@Ctrl(namespace="/user")
public class UserCtrl extends NatureCtrl{
    public User user=new User();//можно не new, но с new будет эффективнее
    public File myfile;//файл для получения
    public ArrayList<File> files = new ArrayList<File>();//получение нескольких файлов. На странице нужен input с именем files[0...]
    public String action;

    @Inject
    protected UserService userService;

    @Ask(url="/list")
    public Object list(){
        page = userService.page(page);
        return "list.ftl";
    }

    @Ask
    public Object toOper(){
        if (user.getInt(user.id)!=0) {
            userService.byId(user);
            action = "update";
        }else{
            action = "insert";
        }
        return "oper.ftl";
    }

    @Ask
    @Redirect
    public Object insert(){
        userService.insert(user,"user_cache");
        return "list";
    }

    @Ask
    @Redirect
    public Object update(){
        userService.update(user,"user_cache");
        return "list";
    }

    @Ask
    @Redirect
    public Object delete(){
        userService.delete(user,"user_cache");
        return "list";
    }

    @Ask
    public Object getJson(){
        return new JsonData(userService.byId(user));
    }

    //пример загрузки файла, всё очень просто
    @Ask
    public Object getFile(){
        InputStream inputStream =this.getClass().getResourceAsStream("文件.docx");
        return new FileData(inputStream, "文件.docx");
    }
}

Техническое общение

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

Особая благодарность

Создание фреймворка nature-framework было бы невозможно без открытых проектов и технических обменов сообщества open source. Мы особенно благодарны проектам @Jfinal https://git.oschina.net/jfinal/jfinal @黄勇 https://git.oschina.net/huangyong/smart-framework Struts2 SpringMVC и другим превосходным фреймворкам.

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

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

Введение

Nature-framework — это облегчённый MVC+ORM фреймворк, основанный на jdk8 и servlet3.0, который придерживается принципов свободы, лёгкости в использовании, простоты кода, быстрой разработки, мощных функций, расширяемости и низкой связности компонентов. Фреймворк подходит для быстрой разработки и включает в себя jar с исходным кодом размером всего... Развернуть Свернуть
Java
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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