Sumk到目前为止已经内置了很多功能,你只需要简单的引入sumk.jar,配置一下app.properties,然后通过SumkServer.start()就可以拥有了。IOC、DB、微服务、WEB是sumk的四大模块,以下是我整理的四大模块现阶段拥有的功能,其它模块的功能,以及四大模块中遗漏的功能,后续会慢慢补上。

  1. IOC
    1. @Bean声明Bean,@Inject在属性上注入Bean
    2. @Cached、Cachable一组与ORM结合的注解与接口。Cachable对象被@Bean注解的时候isCacheEnable()返回false,被@Cached注解的时候isCacheEnable()返回true。两个注解可以同时存在。
    3. 可以根据接口名以集合的方式注入多个Bean
    4. FactoryBean接口
    5. BeanWatcher、Scaned接口,可以在bean初始化或被扫描后注入自己的业务
    6. 许多注解或接口,都只需要增加一个@Bean,就能被sumk框架自动识别
  2. Sumk-db
    1. 自动与redis缓存结合
    2. 读写分离,并支持权重
    3. 多数据源,也就是一个工程用了多个数据库
    4. 分表,比如销售表划分为:销售_福建,销售_浙江等。
    5. 支持非数据库主键字段作为缓存主键,支持数据库多主键以及缓存多主键
    6. 嵌套事务与子事务
    7. 类型转换:数据库的数字类型和时间类型对应于哪种java类型一向是个比较头大的问题。SUMK-ORM会自动把数据库类型转换成你所需要的类型。比如吧BigInteger转成Long。
    8. 拥有事务监听机制,可以监听某张表是否发生了update等操作。只要你写的类实现了DBListener接口,并使用@Bean注解,就可以进行监听了。
    9. 直接逻辑删除,逻辑删除和物理删除,只是根据pojo类是否有@SoftDelete注解,对其它代码无影响
    10. @Box是开启事务的注解,常规情况下,这个注解是必须的
    11. 相关注解:@Box、@Table、@Column、@SoftDelete
    12. 相关类:DB、RawDB、NamedDB,其中DB类是ORM的总入口,该模块只在mysql上开发测试,里面的一些功能还不支持其它数据库(尤其是查询的分页功能)
    13. Long类型的单主键表,insert的时候,会自动生成分布式主键
    14. 辅助工具(非必须):
      1. Pojo:用于提高序列化速度
      2. Pagable、Paged:分页常用到的基础属性
  3. 微服务:
    1. 服务自动注册与自动发现
    2. 高压力时按接口优先级限流
    3. 能够传递接口参数外的额外数据,并且可以在整个调用链上传递。主要用于调用链分析(鹰眼)以及用户信息传递等。
    4. 异步调用:框架内核是用异步方式实现的,但调用的时候可同步可异步
    5. BizException异常可以在整个调用链间传递,前提是你没有把该异常catch掉
    6. 微服务提供方只需要用@Soa在方法上进行注解就可以了。

    7. 微服务调用方只需要一个Rpc类就可以了
    8. 微服务参数支持json方式和按参数顺序两种方式调用
    9. 可以通过@Param注解对微服务的参数做简单的校验
    10. 提供微服务接口的AOP功能,用于做安全校验等
  4. Web功能
    1. 内置redis版的分布式session和本地session两种策略。只要在redis.properties中配置key为session的redis,就能启用分布式session。使用何种session对java代码是透明的
    2. 请求和响应的加密功能(可选),支持自定义加密使用的key
    3. 参数的签名验证功能(可选),而且支持自定义签名验证方式,甚至可以根据不同用户采用不同方式的签名验证
    4. 内置文件上传功能
    5. 接口名支持query参数和restful两种风格
    6. 可以通过@Param注解对微服务的参数做简单的校验
    7. 内置用户是否登录的判断,复杂权限判断可以自己扩展
    8. 提供web接口的AOP功能
    9. 线程繁忙时可根据接口优先级进行限流
01-05 12:43