更新内容

2015-03-13

(请先更新svn的mybatis.xml、BaseMapper.java、Pager.java文件)

加入测试类规范

加入事物控制规范

加入mapper接口规则

注意问题

一、一定要严格按照本文档的规范进行开发,有利于后期维护和修改。

二、每完成一个接口,需要在maven测试包中加入相应的测试方法。确保测试通过。详见测试类的添加

三、所有项目文件编码统一使用UTF8

新项目需要做如下操作:

1.修改工作空间编码为UTF8。

2.修改项目的编码为UTF8(项目右键-属性-resource)。

3.修改文件编码为UTF8(以后新建文件的默认编码为UTF8),包括properties、xml、java、java class文件等所有的编码都改为UTF-8。

Eclipse修改工作空间编码方法:

Eclipse修改文件编码方法:

命名规范

包命名规范

目的:包的命名规范应当体现出项目资源良好的划分

控制层包命名规范:公司名称.开发组名称.项目名称.mod.模块名.controller

例如:com.osen.app.mod.模块名.controller

逻辑层实现类包命名规范:公司名称.开发组名称.项目名称.mod.模块名.service.impl

例如:com.osen.app.mod.模块名.service.impl

逻辑层接口类包命名规范:公司名称.开发组名称.项目名称.mod.模块名.service

例如:com.osen.app.mod.模块名.service

DAO层实现类所在包命名规范:公司名称.开发组名称.项目名称.mod.模块名.dao.impl

例如:com.osen.app.mod.模块名.dao.impl (不含实现类可以忽略)

DAO层接口类所在包命名规范:公司名称.开发组名称.项目名称.mod.模块名.dao

例如:com.osen.app.mod.模块名.dao

POJO类与映射文件所在包命名规范:公司名称.开发组名称.项目名称.mod.模块名.dao

例如:com.osen.app.mod.模块名.dao

全局公共类、接口类所在包命名规范:公司名称.开发组名称.项目名称.mod.common

例如:com.osen.app.mod.common

全局公用dao类所在包命名规范:公司名称.开发组名称.项目名称.mod.common.dao

例如:com.osen.app.mod.common.dao

全局公用逻辑接口类所在包命名规范:公司名称.开发组名称.项目名称.mod.common. service

例如:com.osen.app.mod.common. service

全局公用逻辑实现类所在包命名规范:公司名称.开发组名称.项目名称.mod.common. service.impl

例如:com.osen.app.mod.common. service.impl

全局工具类所在包命名规范:公司名称.开发组名称.项目名称.tools

例如:com.osen.app.tools

类命名规范

service接口命名:

业务逻辑接口的命名以POJO名称来制定,IPOJO名称Service

命名规范:以大写字母"I"开头,如果有多个单词,每个单词头字母大写

例如:IStudentService

service接口实现类命名:

业务逻辑接口实现类的命名以POJO名称来制定

命名规范:将实现的接口名称的首字母"I"去掉,以"Impl作为结尾",如果有多个单词,每个单词头字母大写。

例如:StudentServiceImpl

Controller类命名:

命名规范:Controller的命名以POJO名称来制定,POJO名称+Controller

例如:

一个POJO名称为User,其对应的Controller为UserController

POJO命名:

与表名一致,如果表名有下划线”_”,则POJO类去掉下划线,首字母大写。(表前缀不需要加入,例如:zz_content表,zz为表前缀,对应的pojo类不需要加zz)

例:User.java,MenuRole.java

Mybatis映射文件命名:

实体类名+Mapper.xml

如:UserMapper.xml

DAO类命名:

实体类名+Mapper.java

如:UserMapper.java

类变量命名:

命名规范:变量名首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母大写,单词与单词之间不要使用"_"做连接,变量名访问控制必须为私有, 可以对其增加setter与getter方法。

例如:

  private int studentAge;
public int getStudentAge() {
return studentAge;
} public void setStudentAge(int studentAge) {
this.studentAge=studentAge;
}

常量命名:

命名规范:所有字母大写,如果有多个单词组成,单词与单词之间以” _“隔开。而 且该变量必须是公共、静态、final类型

例如:public static final String USER_NAME=”userName“;

方法命名:

命名规范:首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母 大写,单词与单词之间不要使用"_"做连接。

例如:public int checkLogin(String name,String pwd){}

注释规范

注释规范是整个开发规范中最为重要的组成部分,必须严格执行。

ALT+SHIFT+J快捷键

可以用eclipse的导入注释模版的形式

Window->Preferences->Java->Code Style->Code Templates

到wiki上下载注释的模版文件

类的注释:

作用:注释整个类,简单概述该类作用。

书写规范:类的注释必须写在该类的声明语法之前。在注释中要描述该类的基 本作用,作者,日期,版本,公司名称。

格式:

  /* *
* 类功能描述:(大致描述类的功能)
* @author:编写者名称
*
* @version: 类文件的版本号 从1.0开始(自己确定版本号的增改
* 情况), 修改情况(修改时间、作者、改动情况)
*@Since:2012-12-12
* 相关数据如:(便于理解本类的一些常量数据及某些数据的格式
* 或认为比较重要的数据,如果没有可省略)
*/

类的声明语法

例如:

/**
* Title:管理员模块数据处理类
* Description: 两个数相加
*
* @author 张三
*@Since:2012-12-12
* @version V1.0
*/
public class AdminDAO

变量、常量注释:

作用:简单描述该变量的意义。

书写规范:变量注释必须写在变量定义之前,简单描述其代表的意义。

格式:

/**
* 变量功能描述:(大致描述变量的功能)
*/
例如:
/**
*定义年龄变量
*/
public int age;

方法注释:

作用:对该方法功能简单描述,其参数、返回值意义的注解。

书写规范:方法注释必须写在方法定义之前。该注释包括:方法其功能的简单 描述,方法的参数、返回值类型、返回值意义简单的描述。

格式:

  /**
* 方法功能说明
* @param args (参数类型可以写在参数后,也可以省
* 略。每个参数占一行)
* @return 输出参数(多种情况写在同一行)
* @exception 异常处理类(方法中能够引发的异常,每
* 个异常占一行)
*/

例如:

/**
* 修改管理员密码
* @param adminId 管理员编号
* @param oldPassword 旧密码
* @param password 新密码
* @return boolean 是否编辑成功
* @throws UserException
* @throws ServiceException
*/
public booleaneditAdminPassword(int adminId,String oldPassword,
String password) throws UserException,ServiceException;

测试类的添加

每一个模块完成后,在src/test/java中加入junit测试方法,测试类所在的包的命名在测试的模块所在的包名后加入test,例:

com.osen.app.mod.模块名.test

测试类的命名:模块名Test。例如:测试User模块,则测试类为UserTest.java

事物控制

事物控制统一在逻辑层的实现类中以注解的形式添加,例如:

对UserServiceImpl中的addUser方法需要进行事物控制,操作如下:

1.此方法必须为public

2.在方法名上边加入

@Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)

此注解含义为:如果当前方法没有事物,则加入事物,如果当前方法存在事物,则使用当前方法的事物。事物所控制的异常类型为Exception,即对所有属于exception的异常进行事物回滚。

3.具体注解参数根据实际业务需要进行适当添加和修改。

注意:需要进行事物控制时,在方法名称上边添加事物注解,不要在类名上边添加全局事物注解,以免影响效率。

mapper接口规则

每新建一个mapper接口类,需要继承mapper接口基类BaseMapper,例如:

public interface UserMapper extends BaseMapper

接口基类BaseMapper还不完善,大家在开发过程中有需要提取公用接口到BaseMapper中时,请及时提出,共同讨论,以便进一步完善。

之前已经写好的mapper类,如果业务改动量较小,也请添加继承BaseMapper

java服务端项目开发规范的更多相关文章

  1. 如何实现从Java入门到服务端项目开发的进阶?

    对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫.结合前人经验,就从入门到进阶对于Java的学习而言,应该对于学习时间.目标和内容规划有一个清晰的定 ...

  2. 如何有效快速提高Java服务端开发人员的技术水平?

    我相信很多工作了3-5年的开发人员都会经常问自己几个问题: 1.为什么总是感觉技术没有质的提高? 2.如何能够有效和快速的提高自身的技术水平? 3.如何进入到一个牛逼的大公司,认识牛逼的人? 这篇文章 ...

  3. “快的打车”创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - V2EX

    "快的打车"创始人陈伟星的新项目招人啦,高薪急招Java服务端/Android/Ios 客户端研发工程师/ mysql DBA/ app市场推广专家,欢迎大家加入我们的团队! - ...

  4. 7、Web Service-IDEA-jaxws规范下的 服务端/客户端 开发

    前提简介:这里之后即使基于IDEA进行开发的,风格与之前有些不同之处! 1.服务端的开发 1.创建新的项目 2.pom.xml 添加开发时所需要的依赖 <?xml version="1 ...

  5. 俯瞰 Java 服务端开发

    原文首发于 github ,欢迎 star . Java 服务端开发是一个非常宽广的领域,要概括其全貌,即使是几本书也讲不完,该文将会提到许多的技术及工具,但不会深入去讲解,旨在以一个俯瞰的视角去探寻 ...

  6. 转:Java项目开发规范参考

    Java项目开发规范参考 - KevinLee的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/u011383131/article/details/51227860 ...

  7. java服务端集成极光消息推送--详细开发步骤

    1.极光推送账号准备 要使用极光消息推送必须先在官方网站上注册账号,并添加应用. 产品介绍:https://docs.jiguang.cn/jpush/guideline/intro/ 注册开发者账号 ...

  8. Java 服务端入门和进阶指南

    作者:谢龙 链接:https://www.zhihu.com/question/29581524/answer/44872235 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 现在互联网上资 ...

  9. 那些年,我们见过的 Java 服务端乱象

    导读 查尔斯·狄更斯在<双城记>中写道:“这是一个最好的时代,也是一个最坏的时代.” 移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动:随着行业竞争加剧,互联网红利逐渐消失,很多 ...

随机推荐

  1. CNN 和RNN 中input 长度不一致问题

    转自:https://www.jianshu.com/p/86d667ee3c62,感谢分享! pad_sequences & Masking layer 上面提到,文本数据也可以用CNN来处 ...

  2. ContentProvider启动浅析

    一.自己的理解 对于content provide的启动我是这样认为的,要用ContentResolver去获得一个contentProvider,在这的获得的过程中, 1.如果本应用之前有conte ...

  3. linux配置IP

    1.配置ip的几种方式:   1.使用ifconfig命令(临时配置,重启后失效) 2.使用setup工具(RedHat专有的,不过经本人测试,虚拟机装了centos,也有setup,也可以进行配置, ...

  4. python中文入库

    http://www.cnblogs.com/evening/archive/2012/04/19/2457440.html 工作需要,将cvm.csv文件中的记录志入数据库, name, owner ...

  5. C#设计模式之代理模式(二)

    15.3 代理模式应用实例 下面通过一个应用实例来进一步学习和理解代理模式.        1. 实例说明        某软件公司承接了某信息咨询公司的收费商务信息查询系统的开发任务,该系统的基本需 ...

  6. npm run dev运行Vue项目报错:Node Sass does not yet support your current environment

    导入Vue项目后,#npm run dev 报错: error in ./src/pages/hello.vue Module build failed: Error: Node Sass does ...

  7. centos开启IPV6配置方法

    目前国内大部分服务器和PC不支持IPV6地址的,但是服务器上本身是可以正常开启IPV6服务,有部分程序在服务器上运行的时候,需要服务器能监听一个ipv6地址才行,因此本文档指导如何在centos服务器 ...

  8. May 23rd 2017 Week 21st Tuesday

    Winners are not those who never fail but those who never quit. 成功者不是从不失败,而是从不放弃. Nothing is impossib ...

  9. 出租WiFi到底靠不靠谱?

    创业是一种心态,也是不断的探索,他融入我们的生活,从日常中积累,从小微处启航. 一.背景交代 最近在换工作,本周搬到新租的单身公寓,空间不大,倒是干净整洁.委托租房中介帮忙开通宽带,告知是电信网最低开 ...

  10. (转)每天一个linux命令(1):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...