Sumk到目前为止已经内置了很多功能,你只需要简单的引入sumk.jar,配置一下app.properties,然后通过SumkServer.start()就可以拥有了。IOC、DB、微服务、WEB是sumk的四大模块,以下是我整理的四大模块现阶段拥有的功能,其它模块的功能,以及四大模块中遗漏的功能,后续会慢慢补上。
- IOC
- @Bean声明Bean,@Inject在属性上注入Bean
- @Cached、Cachable一组与ORM结合的注解与接口。Cachable对象被@Bean注解的时候isCacheEnable()返回false,被@Cached注解的时候isCacheEnable()返回true。两个注解可以同时存在。
- 可以根据接口名以集合的方式注入多个Bean
- FactoryBean接口
- BeanWatcher、Scaned接口,可以在bean初始化或被扫描后注入自己的业务
- 许多注解或接口,都只需要增加一个@Bean,就能被sumk框架自动识别
- Sumk-db
- 自动与redis缓存结合
- 读写分离,并支持权重
- 多数据源,也就是一个工程用了多个数据库
- 分表,比如销售表划分为:销售_福建,销售_浙江等。
- 支持非数据库主键字段作为缓存主键,支持数据库多主键以及缓存多主键
- 嵌套事务与子事务
- 类型转换:数据库的数字类型和时间类型对应于哪种java类型一向是个比较头大的问题。SUMK-ORM会自动把数据库类型转换成你所需要的类型。比如吧BigInteger转成Long。
- 拥有事务监听机制,可以监听某张表是否发生了update等操作。只要你写的类实现了DBListener接口,并使用@Bean注解,就可以进行监听了。
- 直接逻辑删除,逻辑删除和物理删除,只是根据pojo类是否有@SoftDelete注解,对其它代码无影响
- @Box是开启事务的注解,常规情况下,这个注解是必须的
- 相关注解:@Box、@Table、@Column、@SoftDelete
- 相关类:DB、RawDB、NamedDB,其中DB类是ORM的总入口,该模块只在mysql上开发测试,里面的一些功能还不支持其它数据库(尤其是查询的分页功能)
- Long类型的单主键表,insert的时候,会自动生成分布式主键
- 辅助工具(非必须):
- Pojo:用于提高序列化速度
- Pagable、Paged:分页常用到的基础属性
- 微服务:
- 服务自动注册与自动发现
- 高压力时按接口优先级限流
- 能够传递接口参数外的额外数据,并且可以在整个调用链上传递。主要用于调用链分析(鹰眼)以及用户信息传递等。
- 异步调用:框架内核是用异步方式实现的,但调用的时候可同步可异步
- BizException异常可以在整个调用链间传递,前提是你没有把该异常catch掉
-
微服务提供方只需要用@Soa在方法上进行注解就可以了。
- 微服务调用方只需要一个Rpc类就可以了
- 微服务参数支持json方式和按参数顺序两种方式调用
- 可以通过@Param注解对微服务的参数做简单的校验
- 提供微服务接口的AOP功能,用于做安全校验等
- Web功能
- 内置redis版的分布式session和本地session两种策略。只要在redis.properties中配置key为session的redis,就能启用分布式session。使用何种session对java代码是透明的
- 请求和响应的加密功能(可选),支持自定义加密使用的key
- 参数的签名验证功能(可选),而且支持自定义签名验证方式,甚至可以根据不同用户采用不同方式的签名验证
- 内置文件上传功能
- 接口名支持query参数和restful两种风格
- 可以通过@Param注解对微服务的参数做简单的校验
- 内置用户是否登录的判断,复杂权限判断可以自己扩展
- 提供web接口的AOP功能
- 线程繁忙时可根据接口优先级进行限流