内部系统开发总结

内部系统开发总结

 

一、开发环境

 

    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;如果不去依赖自己可以参考开源的代码,抽取出自己想要的类和方法,推荐大家可以看看里面的源代码(相信对于代码设计的把握、代码简洁、方法类的命名等都有大的收获)

这里在总结一下关于异常的处理,系统中涉及到非常多的异常,大家对于异常的处理非常的头疼有的时候还比较不好把握,在这里我在开发中总结的经验:

  1. 如果能处理异常,那么将异常记录在日志中而且记录内容要详细比如该异常是哪个类哪个方法中抛出了异常,这样记录是为了以后系统出现故障好定位
  2. 该异常不能处理那么就抛给上一层的逻辑去处理,是否需要记录日志需要针对自己合适的情况
  3. 处理异常的时候一定要注意不要把不要的代码也try住,那样会降低性能,因为异常处理最终还是在堆栈中处理
  4. 逻辑层处理异常的时候一定要针对每一个异常分别的处理,这样在系统故障就能很快的定位,关于资源的释放在finally进行
  5. 关于业务逻辑不重要的异常处理的时候可以将它包装成运行时的异常

 

三、关于权限控制设计

 

 

权限控制在企业级系统中非常的复杂,业务不一样需求不一样,不同级别的人看到不一样的菜单即操作权限而且各样的操作权限可以由管理员来定制等等

 

下面是对于提到需求的解决方案,大体的技术实现是针对于rose的拦截器、controll类和方法注解的拦截、将角色菜单存放在db中并且使用开源的Lru算法进行缓存来实现权限的控制,下面是技术的实现细节:

 

  1. 利用注解和拦截器以及db对权限进行控制,注解主要是放在controller类或者方法中,然后通过拦截器
  2. 利用管理员的身份创建角色以及为角色设置访问权限,将这些数据存放在DB中,由于拦截器经常访问该数据需要缓存,使用common-collections中的LRUMap类进行缓存数据

 

你可能感兴趣的:(总结)