开源软件名称:nature-framework开源软件地址:https://gitee.com/mvilplss/nature-framework开源软件介绍:框架简介nature-framework是一个以自由为理念,以易用,代码简洁,开发快速,功能强大,易扩展,低耦合为目标,适用于快速开发的轻量级MVC+ORM框架。无getter/setter方法,无xml配置,包括源码的jar仅280KB。有效的为您节省大量时间来感受生活的美好,该快试试吧!!! 功能特点
maven依赖https://oss.sonatype.org/#nexus-search;quick~nature4j <dependency> <groupId>org.nature4j</groupId> <artifactId>nature-framework</artifactId> <version>1.0.5</version> <optional>true</optional> </dependency> 最新改进增加优化测试用例写法写法如下,只需继承NatureTest即可 public class TestDemo extends NatureTest{ @Test public void demo(){ MainService service = ServiceHelper.getService(MainService.class); NatureMap natureMap = service.riskRate(); System.out.println(natureMap); }} 增加事务的传递支持原来不能对服务的方法进行嵌套,只能用DatabaseHelper: @Servicepublic class UserService extends NatureService { @Tx public void insert() { User user = new User(); user.put(User.loginname, "lucy"); user.put(User.nickname, "god"); DatabaseHelper.use().insert(user); user.put(User.loginname, "tom"); DatabaseHelper.use().update(user); }} 现在: @Servicepublic class UserService extends NatureService { @Tx public void insert() { User user = new User(); user.put(User.loginname, "lucy"); user.put(User.nickname, "god"); insert(user); user.put(User.loginname, "tom"); update(user); }} 增加hessian分布式工具插件内置
服务提供者: @Hessian("/user.hessian")public interface UserServiceIntf { public List<NatureMap> list(String sql); } 服务消费者: public static void userList(){ String url = "http://localhost:8080/nature-user/user.hessian"; UserServiceIntf basic = HessianClient.create(url,UserServiceIntf.class); List list = basic.list("select * from tb_user"); System.out.println(list.toString()); } 框架安全升级
public void intercept(Invocation invocation) { NatureMap requestParams = invocation.getRequestParams(); Set<Entry<String, Object>> entrySet = requestParams.entrySet(); for (Entry<String, Object> entry : entrySet) { requestParams.put(entry.getKey(),StringUtil.XHTMLEnc( CastUtil.castString(entry.getValue()))); } System.err.println("***测试拦截器执行前***"); invocation.invoke(); System.err.println("***测试拦截器执行后***"); } 如何使用快速上手三分钟上手实例(如果是初次接触此框架):https://git.oschina.net/mvilplss/nature-user功能全面的实例(略熟悉此框架的朋友):https://git.oschina.net/mvilplss/nature-demo 功能介绍实体类1、实体类,无需GET/SET方法,只需声明数据库字段的名称2、使用注解控制指定主键@id,支持ADDSELF(数据库自增长)、UUID(框架维护)、ASSIGN(程序员指定id)3、@Type:按照JAVA语言的基本类型进行设定,无需考虑数据库的字段,还支持默认值,长度设定等,简单快捷 @Table(name = "tb_user")public class User extends NatureMap { @Id(strategy = Strategy.ADDSELF) @Type(type = Types.INT) public String id = "id"; @Type(type = Types.INT) public String age = "age"; @Type(def = "女") public String sex = "sex"; public String name = "name"; @Type(length="300") public String address = "address";} 服务类1、服务类,为了开发简单可以继承框架中的NatureService(非必需),添加@Service注解即可2、事物控制可以通过@Tx进行急速实现3、如果某些业务多读少写则建议使用缓存,使用方法只需传入缓存名称即可,如果缓存有配置则使用,否则使用默认配置。4、所有业务逻辑建议放在Service层 @Servicepublic class UserService extends NatureService { public Page page(Page page) { String sql = "select id,name,sex,age from tb_user where 1=1 order by id desc"; return DatabaseHelper.query(page, sql,"user_cache"); } @Tx public int delete(NatureMap natureMap) { return super.delete(natureMap,"user_cache"); }} 控制类1、创建控制层继承NatureCtrl类并增加@Ctrl注解即可2、类@Ctrl的namespace是控制层的命名空间,所有本控制层的请求都要通过namespace3、属性@Inject注解是注入Service实例4、方法@Ask注解是对方法的映射,如果不写url则默认映射为方法名;与namespace共同组成请求路径/namespace/list5、返回支持直接返回页面"xxx.jsp",返回方法"xxx",返回JSON数据 JsonData,返回下载文件FileData等,绝对的简单快捷6、在控制层需要页面传值的只需声明public类型变量即可,无需冗长的GET/SET7、如需上传文件,控制层直接声明File类型变量即可,支持多文件集合上传,就像接受普通变量一样简单 @Ctrl(namespace="/user")public class UserCtrl extends NatureCtrl{ public User user=new User();//可以不new,如果new的话会提高项目效率 public File myfile;//文件接收 public ArrayList<File> files = new ArrayList<File>();//多文件接收。前台只需input的name为files[0...] public String action; @Inject protected UserService userService; @Ask(url="/list") public Object list(){ page = userService.page(page); return "list.ftl"; } @Ask public Object toOper(){ if (user.getInt(user.id)!=0) { userService.byId(user); action = "update"; }else{ action = "insert"; } return "oper.ftl"; } @Ask @Redirect public Object insert(){ userService.insert(user,"user_cache"); return "list"; } @Ask @Redirect public Object update(){ userService.update(user,"user_cache"); return "list"; } @Ask @Redirect public Object delete(){ userService.delete(user,"user_cache"); return "list"; } @Ask public Object getJson(){ return new JsonData(userService.byId(user)); } //文件下载示例,就是这么简单 @Ask public Object getFile(){ InputStream inputStream =this.getClass().getResourceAsStream("文件.docx"); return new FileData(inputStream, "文件.docx"); }} 技术交流目前框架已经应用公司十多个大小型项目,经过实战和改版升级后正式开源,技术交流群 148999765 ,如果有问题和意见欢迎加入群进行讨论。 特别鸣谢nature-framework框架的建设离不开开源社区的开源项目和技术分享,特别感谢@Jfinal https://git.oschina.net/jfinal/jfinal @黄勇 https://git.oschina.net/huangyong/smart-framework Struts2 SpringMVC等优秀框架 |
2022-08-15
2022-08-17
2022-09-23
2023-10-27
2022-08-18
请发表评论