# OneJava **Repository Path**: frost373/OneJava ## Basic Information - **Project Name**: OneJava - **Description**: A lightweight One-stop JavaWeb Framework 轻量级的一站式JavaWeb开发框架 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: http://www.lalalol.com - **GVP Project**: No ## Statistics - **Stars**: 14 - **Forks**: 2 - **Created**: 2014-12-26 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: webframework **Tags**: None ## README ##OneJava是什么? 一个基于Java的一站式WEB开发框架,框架的设计原则是简洁、灵活和降低学习成本。 OneJava除了一些基本的依赖(日志,Cglib等),不需要集成其他框架,而是实现了自己的MVC、AOP、IOC、持久层。 正因为如此OneJava可以提供一种几乎无需配置、极易学习的一站式开发体验。 ##OneJava有哪些功能和特色? * 遵循COC原则,无XML * 极简的编程风格 * MVC的设计模式 * 用目录结构来创建请求映射规则,解决XML配置麻烦和@注解不宜管理的问题 * 前置后置拦截器链 * AOP支持,四种链式通知类型 * IOC支持,也可轻易的集成Spring * 多种Plugin,扩展性强 * 多种视图和自定义视图支持 * ibatis风格+ActiveRecord的持久层 * 声明式和优雅的手动式嵌套事务管理 ##以下是一个简单的实例,业务为: GET一个ID,返回所有文章的列表,请求要使用AdminLogin,count两个前置拦截器 (这两个拦截器是本包下所有控制器都要使用)和postLog后置拦截器 ###控制器: ```java package work.action.test; //映射关系自动生成为:URL+/test/helloworld.do @ActionInfo(after = "count")//后置拦截器链 public class HelloWorld { @IService public HelloService hello;//注意!无需get、set方法,但必须是public public String excute(MContext context) throws Exception{ List list = hello.getPost((String) context.getValue("id")); context.setReValue("list", list); //使用默认视图,使用WEB-INF下的test/helloword.jsp return "test/helloword"; //return "json,list";//使用Json视图 } } ``` ###创建package-info为work.action.test下的所有控制器添加拦截器 ```java @ActionInfo(before = "AdminLogin,count") package work.action.test; ``` ###服务层 ```java @ServiceInfo(name = "hello")//标记service的信息 public class HelloService { @TX//声明式事务(虽然这个事务没啥用) @IAop(before = "beforeLog,beforeLog2",afterThrow="errorLog")//通知的切入点 public List getPost(String id) throws Exception{ Map map = new HashMap(); map.put("id", id); List list = DB.query("select * from post where id=#id# ", map); return list; } } ``` ####AOP的通知和拦截器就不写了,形式和服务层一样,用注解@XXXinfo声明下就可以,OneJava所有模块的风格都几乎是一样的 ##OneJava的案例 ####我的博客:http://www.lalalol.com/ ##OneJava的架构和设计 ![alt text](http://lalalol.qiniudn.com/desgin01.png "Title") * 整体架构就如同一个分布式系统,Tools提供基础支持,Manage负责管理实体类的整个生命周期,并向外提供功能的接口。Controller调用Manage完成请求的完整逻辑,同时Manage之间也会有互相调用。 这种结构十分清晰明了,模块间只是提供接口,其他互不干涉。 ![alt text](http://lalalol.qiniudn.com/desgin02.png "Title") ##开发进度 * ActiveRecord 开发中 * 更多嵌套事务 待开发 * 事务隔离级别 待开发 * 代码重构 开发中 * AOP模版 设计中