更新内容

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. 《ArcGIS Runtime SDK for Android开发笔记》——(13)、图层扩展方式加载Google地图

    1.前言 http://mt2.google.cn/vt/lyrs=m@225000000&hl=zh-CN&gl=cn&x=420&y=193&z=9& ...

  2. docker 部署 nginx+php+mysql

    系统:centos7 使用root账户 开放80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 安装docker yum ins ...

  3. WAKE-WIN10-SOFT-MATio

    1,matio Matio is an open-source C library for reading and writing binary MATLAB MAT files. This libr ...

  4. xtrabackup 备份恢复

    XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...

  5. spring-4.3.16+xfire-spring-1.2.6版本升级

    最近爆了个spring的漏洞,然后公司整体要求升级spring到最新版本,然后搞四了一大批猿人. spring-4.*的最新版本是4.3.16(稳定版) xfire-spring-1.2.6(最新版- ...

  6. 第一次团队Scrum

                                    长大一条龙之成绩查询 一.项目介绍             本项目的意义在于锻炼团队的scrum能力,加强团队合作能力.确定本项目采用的 ...

  7. 一个SAP开发人员的2017总结

    今年的生活如此丰富多彩,不写一点什么怎么对得起这过去的一年? 就当记流水账,若干年之后回来看一定很有意思. 1月 有幸成为SAP Community上2位来自China的SAP mentor之一: 3 ...

  8. ExtJS4 ajax请求同步异步问题

    今天在写代码过程中遇到一个奇怪的问题.事情是这种,我写了一个简单的页面用来删除选中的用户,请看以下: 由于后台的servlet的代码实现了依据用户名来删除一条记录.所以我在前台的ExtJS代码里面用了 ...

  9. softmax实现cifar10分类

    将cifar10改成单一通道后,套用前面的softmax分类,分类率40%左右,想哭... .caret, .dropup > .btn > .caret { border-top-col ...

  10. React中的响应式设计思想和事件绑定

    这两个点是react入门非常重要的两个点,以前我们是直接操作dom的形式去做,react的设计思想和以前直接操作dom是完全不同的,react是一个响应式的框架,他在做编程的时候,强调的是我们不要直接 ...