java 框架_轻量级 Java 框架 JOxygen

JOxygen

轻量级Java框架

60b693486bd703b472554e6bdac2225b.png

介绍

一个轻量级Java框架

oxygen-core 核心部分

  • 基于cglib的aop实现
  • 提供缓存管理和基于注解的缓存,内置LocalCache和Ehcache实现,可扩展
  • 配置管理,支持${attrs.key:defaultValue}表达式获取配置
  • 加解密管理,提供加解密服务内置基础加密实现,例如SHA-1、SHA-256、MD5
  • 异常管理,提供异常包装,统一异常编码,便于国际化
  • 提供基于构造器注入的ioc(原因:依赖链清晰,并可任意切换ioc实现)
  • 定时任务服务,内置提供了基于注解的定时任务服务
├─ src/main │─ java/.../core //oxygen-core代码目录 │ │- aop //aop实现目录 │ │- cache //缓存实现目录 │ │- config //配置实现目录 │ │- constant //常量目录 │ │- convert //类型转换实现目录 │ │- crypto //密码加密目录 │ │- domain //基础实体目录 │ │- exception //异常管理目录 │ │- io //io读写目录 │ │- ioc //ioc实现目录 │ │- job //定时任务实现目录 │ │- scan //类扫描实现目录 │ │- util //工具类目录 │ │- Bootstrap.java //框架启动引导类 │ └- Plugin.java //插件接口 └─ resources/META-INF/services └- ...core.Plugin //Plugin服务实现配置文件

oxygen-jdbc jdbc实现

  • 小巧简单的jdbc实现,纯jdk实现,无第三方jar
  • 支持多数据源
  • 基于sql进行crud,不提供类似Hibernate的链式方法(原因:sql作为数据库领域的DSL,已经很自然优雅,Less is more)
├─ src/main │─ java/.../jdbc //oxygen-jdbc代码目录 │ │- config //配置数据源目录 │ │- handler //处理器目录,包括结果集处理 行处理 列处理 │ │- interceptor //拦截器目录,拦截sql执行前后及异常 │ │- record //基础crud │ │- Jdbc.java //Jdbc核心操作类,提供crud操作 │ │- JdbcException.java //jdbc异常封装 │ └- JdbcPlugin.java //jdbc插件,与oxygen-core配套使用 └─ resources/META-INF/services │- ...handler.ColumnHandler //列处理服务配置文件 └- ...core.Plugin //增加jdbcPlugin服务实现,与oxygen-core配套使用

oxygen-web

  • 项目使用了Servlet3.0的ServletContainerInitializer接口
  • 在servlet中可自动加载,不需要在web.xml中配置
  • 使用@Router标记路由文件
  • 使用@Mapping标记请求路径处理方法
  • 参数绑定的取值域使用@Param,@HeaderParam,@CookieParam,@PathParam指定,默认为@Param
  • 参数绑定支持简单类型 + Map + 用户实体类
  • 支持返回Json、视图或自定义实现(文件下载等)
├─ src/main │─ java/.../web //oxygen-web代码目录 │ │- handler //参数绑定处理 │ │- http //http请求解析 │ │- mapping //url映射,参数映射相关注解和实体 │ │- router //一个示例路由(获取服务器时间) │ │- server //内置server接口和启动类 │ │- view //视图解析 │ │- DefaultWebAppInitializer.java //默认初始化实现 │ │- DispatcherServlet.java //路由分发器 │ │- WebAppInitializer.java //web自动初始化接口,提供给用户自定义使用 │ │- WebContainerInitializer.java //容器自动初始化 │ │- WebConf.java //web配置 │ └- WebPlugin.java //web插件 └─ resources/META-INF/services │- ...ServletContainerIntializer //servlet3.0规范 │- ...core.Plugin //增加web插件 │- ...ParamHandler //参数处理服务 │- ...RequestParse //请求解析服务 └- ...ViewResolver //视图解析服务

特性

  • 轻量级,注释完善,使用简单
  • 使用ServiceLoader加载插件,易于扩展

安装

添加依赖到你的 pom.xml:

vip.justlive oxygen-core ${oxygen.version}vip.justlive oxygen-jdbc ${oxygen.version}vip.justlive oxygen-web ${oxygen.version}vip.justlive oxygen-web-tomcat ${oxygen.version}

快速开始

基础返回

使用 Resp 作为返回

// 成功返回 code 00000Resp.success(Object obj);// 错误返回 默认code 99999Resp.error(String msg);// 错误返回 自定义codeResp.error(String code, String msg);

异常处理

使用 Exceptions 抛出异常

// 创建 ErrorCodeErrorCode err = Exceptions.errorCode(String module, String code);ErrorCode err = Exceptions.errorMessage(String module, String code, String message);// 抛出unchecked异常throw Exceptions.wrap(Throwable e);throw Exceptions.wrap(Throwable e, String code, String message);throw Exceptions.wrap(Throwable e, ErrorCode errorCode, Object... arguments);// 抛出业务异常 不含堆栈信息throw Exceptions.fail(ErrorCode errCode, Object... params);throw Exceptions.fail(String code, String message, Object... params);// 抛出故障异常 包含堆栈信息throw Exceptions.fault(ErrorCode errCode, Object... params);throw Exceptions.fault(String code, String message, Object... params);throw Exceptions.fault(Throwable e, ErrorCode errCode, Object... params);throw Exceptions.fault(Throwable e, String code, String message, Object... params)

IOC

通过注解使用IOC容器

// 在配置文件中添加扫包路径main.class.scan=com.xxx.xxx,com.aaa.bbb// 使用 @Configuration 和 @Bean@Configurationpublic class Conf {  @Bean Inter noDepBean() { return new NoDepBean(); }}// 使用 @Bean 和 @Inject@Bean("depBean")public class DepBean implements Inter { private final NoDepBean noDepBean; @Inject public DepBean(NoDepBean noDepBean) { this.noDepBean = noDepBean; }  ...}// 运行时获取beanInter inter = BeanStore.getBean("depBean
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值