(1)项目开发流程
1. 立项
项目可实施性分析:(某项目)100W项目,开发周期预计6个月,需要10人,运营(人力)成本2W/人
产品经理入住银行,进行需求调研《需求设计说明书》
需求研讨会:团队所有成员参加2. 设计
UI/UE工程师:《页面原型》
架构师:统一开发环境,项目技术选项,项目架构设计,数据库设计等等《概要设计说明书》
产品经理:接口规范、方法规范、参数规范、步骤要求等等《详细设计说明书》3. 开发
coding(编码),码农4. 测试
白盒测试:代码逻辑和性能
黑盒测试:用户体验
灰盒测试:黑+白5. 部署
运维人员产品部署上传维护....
(2)UML统一建模语言
统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模语言。
简单来说:通过一些专业化的图形,直观的展示项目需求(用例图、时序图、类图)等等。
用例图: user case
图形化的形式展示项目中的所有功能,以及功能的参与者
设计工具PowerDesigner(PD)
绘制用例图、数据库等
(3)开发环境:
jdk版本1.8
maven版本:3.5.2
mysql版本:5.7
(4)创建新的工作空间
设置sdk,以及其他:
整体项目编码的设置
maven的设置
(1)基础回顾
Maven项目管理工具
依赖管理,项目构建
(2)Maven的依赖传递
什么是依赖传递
在maven中,依赖是可以传递的,假设存在三个项目,分别是项目A,项目B以及项目C。假设A依赖B,B依赖C,那么我们可以根据maven项目依赖的特征不难推出项目A也依赖C。
如果我们项目直接依赖的坐标过多,可能就会产生版本冲突问题:
(3) 如何解决依赖冲突问题?
1.依赖调节原则:
第一声明优先原则:
在 pom 文件中定义依赖,谁先声明就用谁
路径近者优先原则
在pom 文件中定义依赖,谁的路径近就用谁
2.排除依赖
通过在pom文件中排除不需要的依赖jar包
3.版本锁定
在pom文件中,直接指定项目依赖的所有版本号,导入依赖的时候就不需要指定版本
properties中定义所有的公共版本号常量
通过dependencyManagement锁定版本号:不会导入依赖jar包
dependencies导入依赖:不需要指定版本号
5.2.5.RELEASE
4.12
org.springframework
spring-context
${spring.version}
org.springframework
spring-webmvc
${spring.version}
junit
junit
${junit.version}
org.springframework
spring-context
org.springframework
spring-webmvc
junit
junit
基于maven构建ssm工程,规范依赖管理。场景:查询所有企业信息
(1)创建数据库
(2)创建web模块“
(3)导入相关依赖:
5.0.5.RELEASE
5.0.5.RELEASE
3.4.5
org.mybatis
mybatis
${mybatis.version}
org.springframework
spring-webmvc
${springmvc.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.mybatis
mybatis
org.mybatis
mybatis-spring
1.3.1
mysql
mysql-connector-java
5.1.32
com.alibaba
druid
1.0.9
org.springframework
spring-webmvc
org.springframework
spring-aspects
org.springframework
spring-context-support
org.springframework
spring-test
org.springframework
spring-jdbc
org.springframework
spring-tx
junit
junit
4.12
javax.servlet
servlet-api
2.5
provided
javax.servlet
jsp-api
2.0
provided
javax.servlet
jstl
1.2
org.projectlombok
lombok
1.18.6
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
1.8
UTF-8
注意:自动导入
(3)搭建MyBatis
Company实体类:
@Data
public class Company implements Serializable {
private String id; // 企业id
private String name; // 企业名称
private Date expirationDate; //到期时间
private String address; // 企业地址
private String licenseId; // 营业执照编号
private String representative; // 法人代表
private String phone; // 手机号
private String companySize; // 企业规模
private String industry; // 行业
private String remarks; // 备注
private Integer state; // 状态
private Double balance; // 余额
private String city; // 城市
}
CompanyDao接口和映射文件
public interface CompanyDao {
// 查询所有
List
}
同时在resources文件夹创建映射文件“
spring整合MyBatis
jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/saas?characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=root
applicationContext-dao.xml
测试:
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-dao.xml")
public class MyBatisTest {
@Autowired
private CompanyDao companyDao;
@Test
public void testFindAll()throws Exception{
List list = companyDao.findAll();
System.out.println(list);
}
}
(4)搭建spring
CompanyService接口和实现
public interface CompanyService {
// 查询所有
List findAll();
}
applicationContext-service.xml
applicationContext-tx.xml
测试:
@RunWith(SpringRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-*.xml")
public class SpringTest {
@Autowired
private CompanyService companyService;
@Test
public void testFindAll()throws Exception{
List list = companyService.findAll();
System.out.println(list);
}
}
(5)搭建SpringMVC
1.页面资源导入“
2.CompanyController和页面
@Controller
@RequestMapping(value = "/company", name = "企业管理")
public class CompanyController {
@Autowired
private CompanyService companyService;
@RequestMapping(value = "/list", name = "查询列表")
public String list(HttpServletRequest request) {
List list = companyService.findAll();
request.setAttribute("list", list);
return "company/company-list";
}
}
3.spring-mvc.xml
4.web.xml
前端控制器,过滤器,监听器
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/spring-mvc.xml
4
springmvc
*.do
contextConfigLocation
classpath*:spring/applicationContext-*.xml
org.springframework.web.context.ContextLoaderListener
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
5.部署测试
完整的项目结构见开始
什么是分模块构建
常见的拆分方式有两种:
按照业务模块进行拆分,每个模块拆分成一个maven工程,例如将一个项目分为用户模块、订单模块、购物车模块等,每个模块对应就是一个maven工程
按照层进行拆分,例如持久层、业务层、表现层等,每个层对应就是一个maven工程
不管是上面哪种拆分方式,通常都会提供一个父工程,将一些公共的代码和配置提取到父工程中进行统一管理和配置。
(1)Maven工程继承
在Java语言中,类之间是可以继承的,通过继承,子类就可以引用父类中非private的属性和方法。
同样,在maven工程之间也可以继承,子工程继承父工程后,就可以使用在父工程中引入的依赖。继承的目的是为了消除重复代码。
创建父工程
创建子模块
(2)Maven工程聚合
在maven工程的pom.xml文件中可以使用
注意,不是子工程也可以聚合在一起,统一管理...
一般情况下,父工程都会作为聚合工程,管理自己的子模块...
改造刚才的ssm工程为分模块开发
(1)创建一个父工程
(2)export_commons
(3)export_domain
(4) export_dao
(5)export_system_dao
(6)export_manager_web
子模块之间的传递依赖思想
测试:
同样配置服务器部署
说明:
maven仓库分为本地仓库和远程仓库,而远程仓库又分为maven中央仓库、其他远程仓库和私服。
maven私服就是公司局域网内的maven远程仓库,每个员工的电脑上安装maven软件并且连接maven私服,程序员可以将自己开发的项目打成jar并发布到私服,其它项目组成员就可以从私服下载所依赖的jar。私服还充当一个代理服务器的角色,当私服上没有jar包时会从maven中央仓库自动下载。
例如:进入企业开发,不同的项目组开发不同的工程
A团队:export_dao工程开发完毕,发布到私服。
B团队:export_system_service从私服下载export_dao
(1)nexus 搭建私服环境
nexus 是一个maven仓库管理器(其实就是一个软件),nexus可以充当maven私服,同时nexus还提供强大的仓库管理、构件搜索等功能
- 下载:
http://www.sonatype.org/nexus/archived/
- 安装:
1.解压:nexus-2.14.10-01-bundle.zip
2.进入解压后的bin目录,打开cmd窗口
3.执行nexus.bat install
注意:需要以管理员身份运行cmd命令
- 卸载:
cmd进入bin目录执行nexus.bat uninstall
注意:需要以管理员身份运行cmd命令
- 启动:
方式一:cmd进入bin目录,执行nexus.bat start
方式二:在Windows系统服务中启动nexus
- 访问:
http://localhost:8081/nexus
用户名:admin
密码:admin123
(2)仓库类型
通过前面的仓库列表可以看到,nexus默认内置了很多仓库,这些仓库可以划分为4种类型,每种类型的仓库用于存放特定的jar包,具体说明如下:
1. hosted,宿主仓库
部署自己的jar到这个类型的仓库,包括Releases和Snapshots两部分
Releases为公司内部发布版本仓库、 Snapshots为公司内部测试版本仓库
2. proxy,代理仓库
用于代理远程的公共仓库,如maven中央仓库,用户连接私服,私服自动去中央仓库下载jar包或者插件
3. group,仓库组
用来合并多个hosted/proxy仓库,通常我们配置自己的maven连接仓库组
4. virtual(虚拟):兼容Maven1版本的jar或者插件
(3)将项目发布到私服
在maven的setting.xml文件中配置:
releases
admin
admin123
snapshots
admin
admin123
在需要发布工程的pom.xml文件中配置:
releases
http://localhost:8081/nexus/content/repositories/releases/
snapshots
http://localhost:8081/nexus/content/repositories/snapshots/
在需要发布的工程执行deploy
在部署之前,一定要安装到本地仓库,才能上传到私服
(4)从私服下载jar包
在maven的setting.xml文件中配置
dev
nexus
http://localhost:8081/nexus/content/groups/public/
true
true
public
Public Repositories
http://localhost:8081/nexus/content/groups/public/
激活
dev
注意,要想实现私服的下载,必须先删除本地仓库jar包.
资料:
私服搭建:https://www.cnblogs.com/knowledgesea/p/11190579.html
https://blog.csdn.net/gyshun/article/details/79297460
maven分模块搭建项目:https://blog.csdn.net/javanotes/article/details/81128020