内部系统开发总结
内部系统开发总结
?
一、开发环境
?
??? rose、Linux、resin、eclipse、maven、svn
?
??? rose框架使用的个人理解的:
约定大于配置,如:controller类必须放在*.controllers包下面,由于rose框架有一套完善的对包扫描服务注解优势对于dao层非常好,程序员只需要写dao接口然后在接口中方法写上sql的注解就可以,这样对于ibatis一系列的配置文件来说是非常的便捷。但是有一点劣势就是系统中大量使用注解会不会对性能产生影响呢?事务的支持不是很好在controller方法中可以支持多个url的匹配,核心思想是方法前面使用了注解来实现rose的拦截器非常强大,也就是在方法执行之前可以拦截,方法执行之后也可以拦截二、系统架构分层的思想
?
一般应用系统架构controller层、service层(如果service层共性比较多还可以抽取一个公共层)、dao层、工具类
?
对这划分三个层次个人的理解:
尽量让controller层做最少的事情,因为它的职责主要是接收参数值(参数的验证)以及转发页面(页面中注入值),对于业务的逻辑以及异常处理尽量放在service层中。controller层代码量就比较少简洁,这一层设计的时候关于页面的跳转之前一定要做好准备如:出现异常的时候跳到404页面、参数验证失败跳转到405等等。service层对于controller提交的参数验证如果controller层对于提交的参数已经验证那么可以不进行验证;业务逻辑的处理(包含bean之间的转换)、异常的处理(dao层抛出的异常、调用第三方服务的异常)dao层只是针对于数据库的访问工具类一定要使用:常处理的就是字符串、日期、集合处理,如果系统复杂依赖的第三方jar太多,最好还是不要去依赖apache的commons-lang、commons-collections;如果不去依赖自己可以参考开源的代码,抽取出自己想要的类和方法,推荐大家可以看看里面的源代码(相信对于代码设计的把握、代码简洁、方法类的命名等都有大的收获)这里在总结一下关于异常的处理,系统中涉及到非常多的异常,大家对于异常的处理非常的头疼有的时候还比较不好把握,在这里我在开发中总结的经验:
?
三、关于权限控制设计
?
?
权限控制在企业级系统中非常的复杂,业务不一样需求不一样,不同级别的人看到不一样的菜单即操作权限而且各样的操作权限可以由管理员来定制等等
?
下面是对于提到需求的解决方案,大体的技术实现是针对于rose的拦截器、controll类和方法注解的拦截、将角色菜单存放在db中并且使用开源的Lru算法进行缓存来实现权限的控制,下面是技术的实现细节:
?
?