# 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{
//其他属性
}
```
.