为什么丢弃spring,开发achieve server

1.结构清晰,代码简洁

achieve server为一栈式框架,全部功能为一人开发。代码模块层层依赖,不仅仅命名风格统一,耦合度低,功能接口开放全。

可以说在achieve server20多个模块很难找到功能类似的方法块。

2.环境参数,开发利器

achieve server中的environment支持DEVELOP|DEBUG|TEST|PRODUCT四种环境变量,可以通过config.properties设置。

设置environment后
config.properties配置属性支持类似一下的配置属性环境变量作用域
database.host=127.0.0.1:3306
database.host|TEST|PRODUCT=localhost:3306
还支持类似以下方式的IOC对象的申明环境变量作用域
@Base(environment = Environment.DEVELOP)`

3.自由扩展,上下统一

achieve server的Configure、IOC、AOP模块,采用层层依赖的方式从底层一步一步实现,你会发现Configure中支持环境参数、字符块等功能在,在ConfigureBean读取.conf文件也适用。

IOC的注入实现对象InjectBeanFactory本身也是通过注入初始化,所以你可以自由扩展的IFieldDefine和IMethodDefine,添加自己的注入实现。

AOP也可以通过扩展IAopMethodDefine自由扩展AOP方法。

4.约定优于配置,默认组件可以扩展

在一些常用功能组件开发时,我们既希望提供默认的组件,但默认的组件往往不能完美匹配需求。其他的IOC框架往往要重新声明一系列子类,从最前端引用对象开始修改、配置等。

而achieve server只需要添加@Base这个默认组件声明,@Base的子类声明IOC对象既可以在容器中直接替换@Base的位置。

一般情况下不提倡用xml配置IOC对象,但是确认要xml配置IOC对象achieve server也是支持的,语法树和spring context xml类似。

5.单MC多V,抽象Input请求,支持的多种请求输入、输出

所有类型请求(View)均被抽象成一个Input请求,所以大多数Server(Controller)方法可以服务不同来源请求,输出不同数据。

基此实现absir-socket,你会发现通过SocketServer实现一个http协议,并让服务端同时支持Http和Socket请求多么简单。

6.效率也很关键

之前一个简单个测试,一样的功能
achieve server 启动时间时为 spring mvc的1/3,同时http请求的效率为6倍(主要测试时http访问地址映射效率)。

achieve server url匹配规则为为二分匹配法,比起spring mvc的url全匹配权值计算法效率要高的多。

同时achieve server不在需要手动制定RequestMapping,主要需要你在@Server标注的IOC对象中实现public 方法。当然你也可以手动指定更高级的RequestMapping映射url。

同时@Server标注的IOC对象还可以统一指定默认RequestMapping的构造方法,统一返回值等等。

7.新颖的权限技巧

RBAC权限管理,对achieve server来说就是一个字段权限控制一个实现,achieve server支持从字段和整体两个粒度设置实体权限获取和传递规则。

类似这样的声明表示居于JbPermission的权限规则由DeveloperAssoc.class定义
@JaLang("开发者")
@JaEdit(editable = JeEditable.DISABLE)
@JaField(assocClasses = JbPermission.class, referencEntityClass = DeveloperAssoc.class)
private boolean developer;

8.基于实体定义的数据绑定,开发参数,字段Crud的规则

实体定义不应该仅仅是Model的中数据定义,他应该可以为Controller,View提供更过的基础定义配置。所以

1.实体定义中支持数据绑定的过滤定义,数据类型转换定义,数据验证。
2.实体定义中可以定义现实表单或列表等数据时的格式配置定义。
3.实体可以定义默认字段的特殊Crud规则如文件上传,密码,加密,创建时间,修改时间,用户信息等。

因此我们可以只需要实体定义,就可以自动生成强大的后台甚至是前台。

9.还有更多有待发现

achieve server还很年轻,文档也不完善。但随着几个项目的实际营运,以及希望能有更多的人参与进来,让一切都更好。

你可能感兴趣的:(为什么丢弃spring,开发achieve server)