框架概述
此框架是以netty为 通信设施,不需要依赖web容器,可以直接以jar包的方式独立运行,支持AOP,MVC,IOC。 后续会继续优化,扩展 加入持久层的支持,以及更多的工具包。
以打造更简洁高效的开发体验为目标。
如果有疑问的话,可以关注我的微信公众号:
由于知乎不让发二维码, 所以我的公众号 账号是:easyframework
开发准备
一、导入依赖jar包
<dependency>
<groupId>com.github.serlockholmes</groupId>
<artifactId>easy-aop</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.github.serlockholmes</groupId>
<artifactId>easy-ioc</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.github.serlockholmes</groupId>
<artifactId>easy-mvc</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.github.serlockholmes</groupId>
<artifactId>easy-core</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.github.serlockholmes</groupId>
<artifactId>easy-netty</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>com.github.serlockholmes</groupId>
<artifactId>easy-server</artifactId>
<version>0.0.1</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>5.0.0.Alpha2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>5.2</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>3.2.5</version>
</dependency>
如果要用log4j打印日志的话,可以把slf4j-jdk14这个包 删掉,并导入log4j的jar包
二、 创建程序入口
在你的项目中创建一个启动类,并创建main方法,如下所示
三、创建配置文件
在resource目录下,新建一个文件: easy.json,文件名和路径是必须遵守的,不然框架无法读取,配置文件为json格式 如下图所示:
port:端口号
sessionTime:session失效时间(毫秒)
control:控制层接口后缀
content_type:响应头数据格式
inters:拦截器
cross_domain:跨域规则
cross_domain->origin:允许跨域的域名
cross_domain->methods:允许跨域的请求方式
这里面可以是空白的,只写一对花括号{},端口默认是8088,sessionTime默认是3600000毫秒,contrl默认是.html,content_type 默认是"text/json; charset=UTF-8",其他不配则没有。
IOC的使用
一、 定义bean
在类上面加上EasyBean注解,即可将此类定义为一个bean,如下图:
其中name属性是必须赋值的,用于注入的时候作为标识
二、 注入bean
在需要注入的属性上加上resource注解,即可将bean对象注入,如下图:
其中name属性是需要注入的那个bean的注解中的name值,不能为空
AOP的使用
一、aop监听类的定义
创建一个java类,实现EasyAop接口,如下图:
startMethod 是被监听的方法执行前执行的
endMethod 是被监听的方法执行后执行的
参数args 是被监听的方法的所有参数
在需要被监听的方法上加上EasyAop注解,即可监听此方法,如下图:
其中className的属性就是 AOP监听类的class,需要注意的是:
1. 同一个类里面的方法,使用的监听类必须相同。不可以不同。
2. 只有easyBean可以监听,controller以及没有定义为easyBean的类都不可以监听
MVC的使用
一、 定义controller
在类上面加上Controller注解,即可将此类定义为一个controller,如下图:
二、映射controller接口
在要映射的方法上,加上EasyMapping注解即可映射,如下图:
其中value值 是 用来作为访问的名字的,method是指定此方法只能通过什么方式的请求访问。
如果要请求当前示例中的这个方法,则url应该这么写:
http://你的域名:你定义的端口号/test.你定义的后缀
三、获取请求参数
easy框架提供了三种方式来获取请求参数
1. 获取所有的参数,并返回一个map
这个map中的key就你的参数的name值,而value是一个数组,里面是你的参数值,如果当前name只对应了一个值,那么取下标0 即可。
2. 用name值 取对应的参数
这种方式 如果一个name对应了多个值(前端的复选框基本是同样的name),那么只能取到第一个。
3. 用name值 取对应的参数
这个方式是用来弥补 第二种方式的缺陷的,他可以将name对应的多个值 一起取到,并返回一个list集合
四、获取文件流
easy框架提供了两种方式 获取文件流
1. 用name值获取
FileUpload 里面包含三个属性:
需要哪个 直接取就好了
2. 全部获取到
这个map的key,是请求参数的name值,value是一个FileUpload对象。
五、返回json数据
跟springboot一样,直接将对象返回,框架会自动转成json,并响应给客户端,如下图:
如果不想通过框架返回,可以返回一个字符串“no”,然后调用response对象中的send方法 自行返回。
拦截器的使用
一、创建拦截器
新建一个java类,并实现 EasyInters 接口,如下图:
startRequest 是在控制层接口被执行前执行的
endRequest 是在控制层接口被执行后执行的
endRequest方法中的obj参数,是控制层接口的返回值
拦截器返回SUCCESS 则表示 拦截通过,如果要拦截不通过的话,直接将 提示信息返回即可。
二、配置拦截器
配置文件中的inters属性就是用来配拦截器的,如下图:
可以配置多个,class是拦截器的类全名,pattern是 要拦截的接口名(支持通配符,如果不是* 要以斜杠开头)