0 Star 0 Fork 0

Hepc / mini-framework

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
0BSD

mini-web-framework

介绍

运用ICO DI AOP RPC概念实现简单的类似于springboot的web框架

使用说明

@Bootstrap 注解的使用,使用该注解启动程序,如果有导入mini-web将启动一个web服务,否则为普通应用

@Bootstrap
public class WebBootDemoApplication {
    public static void main(String[] args) throws Exception {
        MiniApplication.start(WebBootDemoApplication.class, args);
    }
}

@Asepct 注解使用,使用该注解来声明一个切面 @Order注解用来定义切面顺序 @Inject用来注入mini容器管理的对象@Point用来声明切点

@Aspect
@Order(-1)
public class TestAspect {
    @Inject("print")
    private IPrintService iPrintService;

    @Point("java.lang.String origin.mini.boot.controller.*.*(..)")
    public Object test(IAspectChain iAspectChain) throws Throwable {
        iPrintService.print("in method TestAspect ");
        Object proceed = iAspectChain.proceed();
        iPrintService.print("out method TestAspect ");
        return proceed;
    }
}

@Config 用来声明注入配置,并把配置对象交给容器维护,可指定前缀

@Config("person")
@Data
public class Person {
    private String name;
    private int age;
    private int sex;
    private String[] hand;
    private Person sonPerson;
}

@RestHandler 注解用来声明改类为控制器类且返回数据为json形式,@RequestMapping注解用来声明请求路径,可指定请求方式,@Val注解用来注入配置中的数据,@Param 用来将请求数据中指定的 key的value只设置进去

@RestHandler
@RequestMapping("/test")
public class TestController {

    @Inject
    private ITestService iTestService;

    @Val("${server.port}")
    private String port;

    @Val("${server.name}")
    private String name;
    @Inject
    private Person person;

    @RequestMapping(value = "/getString")
    public String getString(Person person2, JSONObject json, @Param("name") String name) {
        return iTestService.testService(port + ":" + person.getName() + ":" + person2.getName() + ":" + json.getString("name") + ":" + name);
    }
}

@Container 表名该类交给容器维护,可指定名称

@Container("print")
public class PrintServiceImpl implements IPrintService {
    @Override
    public void print(String str) {
        System.out.println(str + this.getClass().getName());
    }
}

@ProviderService 用来声明一个接口是否为服务提供接口,将会扫描且注入到注册中心,提供服务,可指定版本

@ProviderService
public class UserServiceImpl implements IUserService {
    @Override
    public String getUserName(int id) {
        return "hpc " + id;
    }
}

@EnableRpcServer 用来指定应用开启提供服务

@Bootstrap
@EnableRpcServer(registerAddress = "192.168.0.89:2181")
public class RpcDemoServerApplication {
    public static void main(String[] args) throws Exception {
        MiniApplication.start(RpcDemoServerApplication.class, args);
        System.in.read();
    }
}

@EnableRpcClient 用来指定应用开启消费服务

@Bootstrap
@EnableRpcClient(registerAddress = "192.168.0.89:2181")
public class RpcDemoClientApplication {
    public static void main(String[] args) throws Exception {
        MiniApplication.start(RpcDemoClientApplication.class, args);
    }
}

@ConsumerService声明你要调的服务,可以指定版本

@RestHandler
@RequestMapping("/user")
public class UserController {
    @ConsumerService(version = "1.1")
    private IUserService iUserService;

    @RequestMapping(value = "/id", method = {RequestMethod.POST})
    public JSONObject getUserById(@RequestBody JSONObject obj) {
        int userId = obj.getIntValue("userId");
        String userName = iUserService.getUserName(userId);
        obj.put("userName", userName);
        return obj;
    }
}
Copyright (c) 2019 Hepc Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

简介

ICO DI AOP RPC 仅用于学习其原理 展开 收起
Java
0BSD
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/hpc622/mini-framework.git
git@gitee.com:hpc622/mini-framework.git
hpc622
mini-framework
mini-framework
master

搜索帮助