# primus **Repository Path**: cohesion/primus ## Basic Information - **Project Name**: primus - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-11-30 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Primus 博智互联网电商平台 ---- ### 关于项目 本工程基于JDK1.8进行开发,使用IDEA作为IDE,management-*使用tomcat8.0以上容器运行 ### 关于lombok 本工程使用了编译时库`lombok`,通过`@Getter`,`@Setter`,`@Data`,`@Slf4j`等注解,在编译时生成对应的方法与字段. 为获得良好的开发体验,请自行寻找并下载`lombok`插件. 为了项目简洁,请所有PO,RO,VO等POJO全部使用lombok来替代getter,setter ### 代码规范 本工程遵循阿里编码规范参考手册 (Alibaba Java Coding Guidelines),请安装阿里近日发布的代码规范插件,并且保证自己提交的代码能通过插件检查. idea可以直接在插件库搜索到这个插件. ### 文档 [工程文档](docs/README.md) [常见问题](docs/question.md) ### 模块结构及包名约定 `app` 终端应用/接口模块,包括bbc商城网站,手机app的接口服务器,微商城的接口服务器 ``` 标准包名:`com.biz.primus.app.{子工程名}.{项目包}` 例如对于BBC网站(ui)的controller包,应该是 com.biz.primus.app.ui.controller ``` `infrastructure` spring-cloud的基础设施 ``` 标准包名:com.biz.primus.infrastructure ``` `base` 项目基础包 ``` 标准包名:com.biz.primus.base.{子工程名}, 如果子工程中有biz-,则去掉,例如:com.biz.primus.base.redis ``` `model` 微服务对应的vo和Exception封装包 ``` 标准包名: com.biz.primus.model.{服务名}.vo com.biz.primus.model.{服务名}.exception ``` `management` 微服务对应的管理模块 ``` 标准包名:com.biz.primus.management.{服务名} ``` `service` 微服务模块 ``` 标准包名:`com.biz.primus.ms.{服务名}` 子包: dao.repository, dao.redis, dao.po, dao.ro: 服务的dao层 service: 微服务的服务层 api: 微服务的接口层(controller) 例如stock服务包含以下包: com.biz.primus.ms.stock.dao.redis com.biz.primus.ms.stock.dao.ro com.biz.primus.ms.stock.service com.biz.primus.ms.stock.api ``` ### 配置文件约定 - 配置文件全部使用`yml`格式 - 所有自定义配置全部以`primus`开头 - 所有的自定义配置都使用`@ConfigurationProperties`做`spring-boot`原生集成 示例代码:`com.biz.primus.ms.base.config.JedisConfiguration.RedisProperties` - ~~注意区分不可刷新配置和可刷新配置,在制定属性namespace时就考虑将两者分开~~ - 每个`spring-cloud`应用只能包含一个`bootstrap.yml`配置文件,该文件中只能写`config-server`和`application-name`相关配置 - ~~其他配置文件必须以`{applicationName}-{profile}.yml`的形式放在/config-repo目录下~~ - 本地环境的配置以`application-dev.yml`的命名放置在资源文件夹,该文件是被`.gitignore`忽略的,可以任意修改不必提交. - 远程环境的配置以`{applicationName}-{profile}.yml`的形式放在/config-repo目录下 ### PO设计原则 除非对象之间的关系是`组合关系`,否则不能使用强关联, 也就是`@OneToOne`,`@OneToMany`,`@ManyToOne`,`@ManyToMany`,`@ElementCollection`等注解. 所有强关联必须转换为相应的id引用.例如: ```java //假设有这样的po public class Order{ @ManyToOne private User user; //其他属性 } public class User{ @OneToMany(mappedBy="user") private List orders; //其他属性 } ``` 这样的代码必须修改为 ```java public class Order{ private Long memberId; //其他属性 } public class User{ //其他属性 } ``` .