[关闭]
@sqzrcc 2015-06-05T03:44:16.000000Z 字数 3723 阅读 1864

项目开发规范及说明


架构规范

  1. └─com.chinamedcom
  2. ├─auth --- 各个模块,包里面放这个模块相关的内容(这里指权限相关)
  3. ├─controller --- 权限相关的controller(类似Strtus2Action,用于处理url映射的内容),controller 不允许去直接调用repository的方法(通过service)
  4. ├─entity --- 权限相关的model
  5. ├─repository --- 权限相关的repository(dao)
  6. ├─service --- 权限相关的service,调用repository的方法.
  7. └─shiro --- 其他.如果此模块里还需要其他包支持,单独建包存放,比如权限里面用到的shiro
  8. ├─authc
  9. └─credential
  10. ├─cache
  11. └─realm
  12. ├─controller --- 公共的controller,比如(验证码 读取城市列表 读取省份列表等)
  13. └─base --- 存放controller的基础类,方便扩展
  14. ├─entity --- 公共的entity,比如(城市 省份)
  15. └─base --- 存放entity的基础类,方便后期扩展
  16. ├─manager --- 各个模块需要的管理工具,比如redisManager(提供get set方法操作redis)
  17. ├─repository --- 公共的repository
  18. └─base --- 存放基础repository
  19. ├─service --- 公共的service
  20. └─base --- 存放基础service
  21. └─util --- 工具类

开发相关

controller

  1. @Controller // 注解,标志此类为controller,提供给spring mvc扫描映射
  2. @RequestMapping("/common") // 整个类映射的url,此处映射为 /common,在此类中的所有方法都以/common开头
  3. public class CaptchaController {
  4. @RequestMapping("/captcha") // 此方法映射为/captcha,由于此类整体映射成/common,所以此方法的url映射完整路径为: "/common/captcha"
  5. public void show(){
  6. // 方法返回字符串:
  7. // 默认解析位于/WEB-INF/viewer的模板,比如返回"auth/login.html",则会解析/WEB-INF/viewer/auth/login.html的模板
  8. // 如果是返回的字符串以redirect开头,则跳转,比如返回"redirect:/auth/login",则会重定向到http://127.0.0.1/auth/login
  9. // -------
  10. // 返回json对象:
  11. // 如需返回json,在此类中加入@ResponseBody注解,直接返回一个对象 数组 或者map,则会自动转换成json(参考\com\chinamedcom\auth\controller\LoginController.java - loginPost方法)
  12. // 接受参数:
  13. // 在定义方法的时候传入
  14. // public void show(@RequestParam String username)
  15. // 表示接受传入key等于username的参数,并由springmvc带上值执行此方法
  16. // 参数: @RequestParam(value = ""(string,指定外部传进来参数名,如果变量名和参数名不一致的时候使用,默认和变量名相同),required=""(boolean,此参数是否必须,默认为true,如果不负责则直接返回404),default=""(String,默认值))
  17. // 对于大量的表单提交(比如更新用户信息),可直接让spring mvc 给某个model赋值
  18. // public void show(PhrMember memeber)
  19. // 如果提交的表单包含member里的属性,自动会调用setXXX赋值上
  20. // 比较灵活(不推荐):
  21. // public void show(HttpServletRequest request,HttpServletResponse reponse)
  22. // 传入request response 然后可以通过request获取参数等信息
  23. // 显示验证码
  24. }
  25. }

entity

  1. @Entity // 表明是一个entity(让jpa扫描)
  2. @Data // lombok提供的方法,加上这个注解后,会自动生成所有属性的get set tostring hascode 方法
  3. @NoArgsConstructor // lombok 提供的方法,加上这属性后,会提供一个空的构造方法
  4. @AllArgsConstructor // lombok 听的方法,加上这属性后,提供一个带有所有参数的构造方法
  5. @Table(name = "phr_dept") // 指定表名和相关一些属性(参考jpa文档)
  6. public class PhrDept extends BaseEntity { // 集成BaseEntity方便后期扩展
  7. @Id // 指明此字段为id(参考jpa文档)
  8. @Column(name = "id", nullable = false, insertable = true, updatable = true) // 指明此为一个字段,并可加上一些属性
  9. private int id;
  10. @Basic
  11. @Column(name = "name", nullable = false, insertable = true, updatable = true, length = 35)
  12. private String name;
  13. @Basic
  14. @Column(name = "parent_id", nullable = true, insertable = true, updatable = true)
  15. private Integer parentId;
  16. }

repository

  1. @Repository // 标志为spring bean
  2. public interface MemberRepository extends BaseRepository<PhrMember, Long> { // 集成基础repository 带上所操作的类型和ID类型
  3. @QueryHints({@QueryHint(name = org.hibernate.jpa.QueryHints.HINT_CACHEABLE, value = "true")}) // 缓存(目前暂时不考虑缓存)
  4. PhrMember findByUsername(String username); // spring data jpa 根据命名来决定该执行什么查询,定义一个方法就行, 不用自己去写实现,更多的查询方式参考: https://sqzr.cc/blog/2015/06/04/spring-data-select/
  5. }

service

  1. @Service // 标志为spring bean
  2. public class MemberService extends BaseService<PhrMember, Long> { // 集成基础service 带上所操作的类型和ID类型
  3. @Autowired // 让spring 自动将此类型注入进来
  4. private MemberRepository memberRepository;
  5. // 查询所有user对象,findOne为查询单个
  6. @Transactional(readOnly = true) // 声明这个方法需要事务管理 readOnly=true 表示此方法只读(不更新新增删除),更多属性请参考spring 事务相关的
  7. public List<PhrMember> findAllUsers() {
  8. return memberRepository.findAll();
  9. }
  10. @Transactional(readOnly = true)
  11. public PhrMember findByUsername(String username) {
  12. return memberRepository.findByUsername(username);
  13. }
  14. }

一些规范

开发相关

安全相关

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注