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

OSCHINA-MIRROR/xiwa-spring-nc

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

spring-nc

spring-nc — это расширение Spring MVC, которое автоматически генерирует контроллеры на основе интерфейсов сервисов и внедряет реализацию этих интерфейсов в контроллер.

Автоматически созданные контроллеры ничем не отличаются от обычных контроллеров, за исключением того, что они создаются автоматически. Для этого достаточно применить аннотации типа @Controller, @RequestMapping и т.д. к интерфейсу, что значительно упрощает процесс разработки. При этом автоматически созданные контроллеры могут сосуществовать с обычными контроллерами.

Кроме того, spring-nc предоставляет возможность автоматического маппинга методов. Для этого следует использовать аннотацию @AutoController на интерфейсе. Это позволяет обращаться к методам сервиса через URL вида /интерфейс/метод.

github: https://github.com/xiwasong/spring-nc
oschina: http://git.oschina.net/xiwa/spring-nc
qq группа: 233391281

использование:

1. Объявление интерфейса:

Определите интерфейс сервиса и примите необходимые аннотации контроллера, как обычно.

package cn.hn.java.summer.springnctest.service;

import cn.hn.java.summer.springnc.annotation.GetMapping;
import cn.hn.java.summer.springnc.annotation.RequestMapping;
import cn.hn.java.summer.springnc.annotation.RestController;
import cn.hn.java.summer.springnctest.bean.User;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * Created by xw2sy on July 15, 2017.
 */
@RestController
@RequestMapping("/")
public interface IHello {
``````markdown
# 1. Конфигурация контроллеров:

```java
package cn.hn.java.summer.springnctest.controller;

import cn.hn.java.summer.springnctest.bean.User;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/say")
public class HelloController {

    @GetMapping
    public String say(@RequestBody User user) {
        System.out.println(user.getName());
        return "привет " + user.getName();
    }

    @GetMapping("/say2")
    public String say2(@RequestParam String name, @RequestParam int age) {
        return "имя:" + name + " возраст:" + age;
    }

    @GetMapping("/info/{id}")
    public String info(@PathVariable("id") String id) {
        return "информация id:" + id;
    }
}

2. Создание сервиса, который реализует интерфейс:

package cn.hn.java.summer.springnctest.service;

import cn.hn.java.summer.springnctest.bean.User;
import org.springframework.stereotype.Service;

@Service
public class HelloService implements IHello {

    @Override
    public String say(User user) {
        System.out.println(user.getName());
        return "привет " + user.getName();
    }

    @Override
    public String say2(String name, int age) {
        return "имя:" + name + " возраст:" + age;
    }

    @Override
    public String say2(String name) {
        return "имя:" + name;
    }

    @Override
    public String info(String id) {
        return "информация id:" + id;
    }
}

3. Применение аннотации @EnableNoController в классе запуска приложения:

package cn.hn.java.summer.springnctest;

import cn.hn.java.summer.springnc.AutoControllerApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableNoController;

@SpringBootApplication(scanBasePackages = "cn.hn.java.summer.springnctest.service")
@EnableNoController
public class Application {
}
        SpringApplication.run(Application.class, args);
    }
}

Вы можете создать его вручную, если вы не используете Spring Boot:

<bean class="cn.hn.java.summer.springnc.NoControllerConfig">
    <property name="scanBasePackages" value="cn.hn.java.summer.springnctest"/>
</bean>

4. запрос GET /say?name=мир:

вывод: привет мир

5. пример: https://github.com/xiwasong/springnc-test

Поддержка автоматического отображения:

Поддержка автоматического отображения, как показано ниже, применяется аннотация @AutoController к интерфейсу, соответствующие методы интерфейса будут отображены на /IAutoMapping/метод.
Если есть методы, которые вы не хотите автоматически отображать, вы можете использовать аннотацию @ExcludeMapping для исключения этих методов.
Конечно, вы также можете смешивать использование других аннотаций отображения, таких как @RequestMapping.

package service;

import cn.hn.java.summer.springnc.annotation.AutoController;
import cn.hn.java.summer.springnc.annotation.ExcludeMapping;
import cn.hn.java.summer.springnc.annotation.RequestMapping;

/**
 * Created by xw2sy on July 17, 2017.
 */
@AutoController
public interface IAutoMapping {

    //отображается на "/one"
    String one();
}```markdown
отображение результат:
```java
2017-07-19 02:39:43.311  INFO 6296 --- [           главная] s.w.s.m.m.a.RequestMappingHandlerMapping : Отображено "{[/IAutoMapping/one]}" на метод public java.lang.String service.IAutoMappingController.one()
2017-07-19 02:39:43.311  INFO 6296 --- [           главная] s.w.s.m.m.a.RequestMappingHandlerMapping : Отображено "{[/IAutoMapping/imFour]}" на метод public java.lang.String service.IAutoMappingController.four()
2017-07-19 02:39:43.311  INFO 6296 --- [           главная] s.w.s.m.m.a.RequestMappingHandlerMapping : Отображено "{[/IAutoMapping/three]}" на метод public java.lang.String service.IAutoMappingController.three(java.lang.String)

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

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

Введение

Описание недоступно Развернуть Свернуть
Отмена

Обновления

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

Участники

все

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

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