前言:
本文浅浅讲解一下,使用多种软件共同开发一个java工程。
这是我在windows系统上跑成功的一次设计:
逻辑图如下:
一:所需软件和版本。
idea,maven,jdk,git,jenkins,nginx,fiddler,chrome,mysql,navicat,tomcat,apifox
idea:Docs
maven:http:// maven.apache. org
jdk:建议使用jdk.8,目前较为主流的jdk版本。百度安全验证
git:Git - Downloads
jenkins:Jenkins详细教程 - 简书
mysql和navicat:https://blog.csdn.net/weixin_44006731/article/details/128613910?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168024526716800215077560%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168024526716800215077560&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-128613910-null-null.142^v80^insert_down38,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=navicat%E5%AE%89%E8%A3%85&spm=1018.2226.3001.4187
tomcat:【Tomcat】Tomcat 介绍及使用教程_吞吞吐吐大魔王的博客-CSDN博客
二:软件配置
Spring作为最流行的java开发框架,常用来实现微服务,其主要特点是简化了初始化搭建与开发过程,提供了包括自动化配置、Starter(简化Maven配置)、内嵌Servlet容器、应用监控等能力。
环境准备
步骤 | 名称 | 详细 |
1 | Windows操作系统 | Microsoft Windows [版本 10.0.17134.1184] |
2 | JDK | java version "1.8.0_231" Java(TM) SE Runtime Environment (build 1.8.0_231-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode) |
3 | IntelliJ IDEA | IntelliJ IDEA Community Edition 2019.3.1 x64 |
4 | Apache Maven | Apache Maven 3.6.2 (40f52333136460af0dc0d7232c0dc0bcf0d9e117; 2019-08-27T23:06:16+08:00) Maven home: D:\SETUP\Java\apache-maven-3.6.2-bin\apache-maven-3.6.2\bin\.. Java version: 1.8.0_231, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_231\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows" |
5 | 配置IntelliJ IDEA |
- 用Maven命令创建项目
【Maven】【Name】【Group】【Version】【ModuleName】创建即可。
然后手工添加Spring Boot的依赖,pom.xml
<parent><!-- 提供了如下能力:1、jdk版本 1.82、编码格式 utf-83、提供依赖管理用来管理项目的版本4、资源过滤与插件配置如果不使用此,需要自己添加替代的配置--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.3.RELEASE</version></parent><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>编写启动类@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}
- 用Spring Asistant构建项目
【File】-【New】-【 Project】
选择【Spring Asistant】
确定项目名称【helloworld】
然后,选择【Web】-【Spring Web】
最后确定项目名【helloworld】
然后,项目生成,可下载依赖包(Reimport All Maven Projects)
这里我更新时提醒错误【Cannot resolve net.bytebuddy:byte-buddy:1.10.6】,通过调整版本2.2.4到2.2.2解决之
最后,找到入口类,执行main方法
- 工程目录介绍
以上述生成的helloworld为例,介绍相关的文件目录如下:
IDEAPROJECTS\HELLOWORLD
├─.idea
│ └─libraries
├─.mvn
│ └─wrapper
├─src
│ ├─main
│ │ ├─java # 放置所有的java文件
│ │ │ └─com
│ │ │ └─example
│ │ │ └─helloWorld
│ │ └─resources # 放置所有的资源文件,包括静态资源、配置、页面文件等。包括application.properties或者是 application.yml
│ │ ├─static
│ │ └─templates # 放置末班文件,如Thymeleaf模板文件
│ └─test
│ └─java # 放置单元测试类代码java文件
│ └─com
│ └─example
│ └─helloWorld
└─target #放置编译后的.calss文件,配置文件等
├─classes
│ └─com
│ └─example
│ └─helloWorld
├─generated-sources
│ └─annotations
├─generated-test-sources
│ └─test-annotations
└─test-classes
└─com
└─example
└─helloWorld
1 配置文件
Spring Boot自动在/src/main/resources目录下寻找application.properties或application.yml文件,找到后则应用此文件的配置,两者可并存。以properties文件的配置优先。
application.properties 格式如下
server.port = 8080
application.yml 格式如下
server:
port: 8080
2 入口类
入口类的类名是按照项目名生成的,【项目名+Application】
其使用@SpringBootApplication组合注解。
入口类放在包的最外层,便于扫描所有的子包中的类。
3 测试类
测试类的类名是按照项目名生成的,【项目名+ApplicationTests】
@RunWith(SpringRunner.class) : 参数化运行器,配合@Parameters使用Junit的参数化功能。
@SpringBootTest : 测试SpringApplication
@Test: Junit单元测试的注解,表示一个测试方法。
4 POM文件
待深入
- Maven在IDEA的辅助工具
IDEA工程右侧对maven的结构可呈现树状视图,如下:
修改完pom.xml后,右侧会呈现相关依赖列表,并可通过点击刷新实现下载,点击Lifecycle下的标签,实现maven命令的触发。
- 编写最简单的Demo
在src中新建controler包,在包中创建SimleDemo类,代码如下:
package com.example.helloWorld.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class SimpleDemo {@GetMapping("/helloworld")public String hello() {return "Hello World!";}}
- 执行测试
启动Application入口类,访问地址 http://127.0.0.1:8080/helloworld,可得到如下页面:
5 集成MySQL数据库
SpringBoot集成MySQL通过引入依赖,配置数据库参数,建立实体类即可实现。
- 引入依赖
修改POM,刷新即可。
在pom文件中添加对MySQL的依赖,具体代码如下:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>
- 添加数据库参数配置
在application.properties文件添加类似如下配置信息
spring.datasource.url=jdbc:mysql://db.domin.com:3306/db_namespring.datasource.username=namespring.datasource.password=passwdspring.datasource.driver-class-name=com.mysql.jdbc.Driver
- 设计简单实体类
表结构如下,准备好数据之后,就可以参考设计自己的实体类。
设计的实体类如下:
package com.example.helloWorld;public class TCategory {private Integer f_id;private String f_name;private String f_crt_tm;private String f_mod_tm;private String f_desc;/****在编辑完上面的代码后,按p即可出现快捷输入*选择快捷代码右边有绿色的打开的锁的图标的代码即可出现下列代码**/public Integer getF_id() {return f_id;}public String getF_crt_tm() {return f_crt_tm;}public String getF_desc() {return f_desc;}public String getF_mod_tm() {return f_mod_tm;}public String getF_name() {return f_name;}public void setF_crt_tm(String f_crt_tm) {this.f_crt_tm = f_crt_tm;}public void setF_desc(String f_desc) {this.f_desc = f_desc;}public void setF_id(Integer f_id) {this.f_id = f_id;}public void setF_mod_tm(String f_mod_tm) {this.f_mod_tm = f_mod_tm;}public void setF_name(String f_name) {this.f_name = f_name;}
}
- 编写测试方法
@Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void mySqlTest(){String sql = "select f_id,f_name ,f_crt_tm,f_mod_tm,f_desc from t_category";List<TCategory> cateList = (List<TCategory>) jdbcTemplate.query(sql,new RowMapper<TCategory>(){@Overridepublic TCategory mapRow(ResultSet rs,int rowNum) throws SQLException {TCategory cate = new TCategory();cate.setF_id(rs.getInt("f_id"));cate.setF_crt_tm(rs.getString("f_crt_tm"));cate.setF_mod_tm(rs.getString("f_mod_tm"));cate.setF_name(rs.getString("f_name"));cate.setF_desc(rs.getString("f_desc"));return cate;}});System.out.println("Query ok:");for(TCategory itm:cateList){System.out.println(itm.getF_id()+"\t"+itm.getF_name()+"\t"+itm.getF_crt_tm()+"\t"+itm.getF_mod_tm()+"\t"+itm.getF_desc());}
}
测试方法还可以使用tomcat
点击➕,选择tomcat服务器
根据自己的tomcat版本选择相应的的服务程序,名称。URL和http端口可以自行定义
点击部署,加入相应的war包,保存后便可以正常运行。
JdbcTemplate是一个通过JDBC连接数据库的辅助类。可通过如下代码引入:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency>
@Resource是一个注解,可让Spring Boot协助实例化一个JdbcTemplate实例对象,省去初始化的工作。
6 执行测试
IDEA中选择测试方法,运行,可看到输出相关数据库的值。(小技巧,运行打包等操作之前可以clean一下然后再重新加载一下很多时候因为数据缓存导致运行失败的,那种情况查都查不出来)
三.将可以运行的文件上传到git仓库中。
首先,创建一个属于自己的git仓库,然后将项目提交并推送到git仓库中
Windows系统下搭建Git本地代码库「建议收藏」 - 腾讯云开发者社区-腾讯云
这个是自己的git仓库地址,然后进行以下操作git-推送-选择需要变更的文件-提交并推送。
这样你可以在自己的git仓库中看到可以运行的软件
其实到这里已经成功的建立了一个javaweb的后端程序并上传到自己的git仓库,这样也不怕改错了导致需要重新编辑,可以随时从git上下载代码用idea打开。但是我们往往会使用到最后一个工具jenkins来将自己写的代码上传到企业的测试环境中,以及使用apifox进行测试。
四.上传及测试。
上传
上传工具我使用的是jenkins
这里需要添加密匙,需要输入自己的git账号密码
如果发现自己有的配置选项没有,就需要去dashboard下面的系统管理中的插件管理里面增加对应的插件。
配置完成之后可以运行
然后查看构建历史
然后点击最新的构建历史并查看控制台输出,看看是否运行成功或者问题出在哪里(一般构建需要较长的时间,如果几秒钟就构建完成并显示绿色的勾基本是没有上传文件,需要查看自己的配置)
测试
每个团队用到的测试软件都有差异,我这里使用的apifox,可以使用软件,也可以使用网页版,创建账号后可以新建团队,在新建团队里面可以邀请成员一起参与编辑和测试(前提是在同一个测试环境里面)
这里我新建了一个演示项目
打开之后点击新建接口
这里我们一般只用到GET(查找)和POST(修改)并在接口路径上写入URL
我这里写入这个
然后保存,运行,发送
到这一步就已经查询成功了。
要注意格式,{
"name":"text",
"id":"1"
}
现在我们建立一个修改,在示例值里面写入想给其他成员看的查询/修改模板。
这里我没有增加ID所以报错(ID一般是在navicat中设置的主键)
保存运行之后,在动态值里面写入对应的数据,点击发送即可修改,如果加入对应的id主键就是修改,如果加入不存在的ID就是新增。
这里因为我的8888端口被fiddler占用了,关闭fiddler后
帮助中心 | Apifox 帮助文档
我这里修改name为name1,刷新一下chrome
修改成功 !
这是我最后一段数据库的数据,我将id设置为100后,刷新一下chrome
新增成功!
五.结束语
非常感谢能看到这里,本文主要提供了新人工作时可能遇到的一小部分情况。
如果有错误还望指出,谢谢各位。