一、使用Git拉取项目到本地
北林ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
1、团队实际开发Git概况
在实际开发的项目中,一个项目会有 三种版本分支:master版本分支、dev版本分支、自定义版本分支
master版本分支: 正式运行环境中的程序代码,运行环境会定期自动或按计划手动从该master版本分支中获取代码并重新编译和运行,不允许随意修改,一旦出错将对系统造成严重后果。所以开发人员不会被项目管理员授予:在Master上创建分支、直接提交代码到Master分支上、使用Master分支合并其他分支的权限。
dev版本分支: 测试环境中运行的代码,master版本分支会定期合并该dev版本版本分支的代码,也不允许随意修改,如果想要修改,必须先新建一个自定义版本分支,编写好代码之后同步到云端仓库,在云端使用Git向该项目的管理员发出合并请求(merge),项目管理员同意之后才能在dev分支中看到自己写好的代码。所以开发人员也不会被授予:直接提交代码到dev分支、使用dev合并其他分支的权限;但是拥有在dev分支上新建自定义分支的权限。
自定义版本分支: 自己定义的版本分支,有两种情况。
情况1: 一般情况下,开发人员使用git clone命令、使用IDEA或GitHub Desktop等其他图形化工具从云端复制项目到本地的是当前时间的master版本,开发人员需要在本地新建一个分支(可以命名为dev)关联到云端的dev分支,再在本地dev分支上新建一个自定义版本分支。
情况2: 还有一种情况是先在云端的dev上新建一个自己的分支,再使用命令行自定义拉取信息,拉取刚才新建的分支到本地。
当开发人员在自定义分支上开发完了自己的代码之后,将当前自定义版本分支同步到云端,这时候请求合并到dev分支,管理员或者被授权合并权限的人员就可以审核开发人员的代码并进行合并了,如果测试不通过则不予合并,如果在合并之后出现问题,则将dev分支回退到之前的版本。
2、Git拉取项目:就是复制项目到本地。
本文介绍使用IDEA从云端拉取项目,默认拉取的是master分支的快照,相当于在本地新建一个master分支,再把当前master分支的代码复制到本地master分支。
(1)新建项目,从版本控制系统拉取。
(2)从云端查看要被拉去的项目路径,在IDEA中输入项目路径
在这里复制
在这里输入
然后确认即可
3、用IDEA打开或者导入刚才的项目,项目为git-test
打开或者导入都可以,以下是打开
信任项目选择信任
此时项目就已经下载到本地并且作为一个项目文件存在了,但是还是不能直接运行,因为大型项目往往需要配置运行环境。
二、本地运行
克隆好的SpringBoot项目用IDEA打开自动会根据maven加载项目依赖,并配置启动类。
IDEA右上角菜单栏出现下图所示的情况表示加载成功。
由于项目是团队开发,所以项目的src\main\resource目录下会有对应多个状态的properties配置文件,如下图:
application.properties、application-dev.properties、application-prod.properties分别对应总体配置、测试开发环境配置、运行环境配置。需要这些配置的原因是:测试环境(dev)和生产环境(prod)的数据库或者资源不一致,测试环境的数据库是生产环境的一个副本,生产环境数据库只允许增加和查看,修改和删除需要严格控制。
由于我们当前是在开发环境之下,所以需要加载使用dev环境的配置。但是加载和使用dev环境的配置不能在代码中设置,如果上线到运行环境运行到这部分代码就会出错,所以需要在运行时设置VM Options参数:-Dspring.profiles.active = dev,如下图:
三、本地测试
正常情况下本地测试:
在Test同路径下面创建测试类,并在类上添加注解@SpringBootTest;创建方法,并添加注解@Test
代码如下:
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制
但是在某些情况下可能会报错,尤其是在某个地方使用了@WebEnvironmentAutoConfig注解之后,可能需要重新指定测试类的运行环境。
此时需要
(1)先检查pom.xml,看是否配置了spring-boot-starter-test
(2)查看import,分别尝试import org.junit.Test;和import org.junit.jupiter.api.Test;
(3)尝试修改注解,如:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {OperationApplication.class})
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制

(4)如果此时还是出错,并且是在未添加@RunWith(SpringRunner.class)注解出现NullPointer错误,添加了次注解出现上下文环境无法加载错误(ApplicationContext not found),说明没有指定测试类的运行环境配置,就像上文指定开发运行环境配置一样。
指定测试类的运行环境配置
方法有三种:
(1)一种是给Junit添加VM Options:-Dspring.profiles.active = dev
添加Junit在此项目中的总体运行配置,此时在每一次运行Junit测试的时候,IDEA都会加上此运行配置,一劳永逸。
(2)单个测试方法添加运行配置
此时需要对每个测试方法都添加配置,比较麻烦。
(3)在每个测试类上添加@ActiveProfiles(“dev”)指定运行环境,并添加@RunWith(SpringRunner.class)
代码如下:
@RunWith(SpringRunner.class)
@ActiveProfiles("dev")
@SpringBootTest
public class SpringBootFunctionTests {
@Autowired
UserService userService;
@Test
public void testMethod1() {
//方法体
}
}
登录后复制
也需要对每个测试类都添加这两个注解。
Java应用程序的运行经过编写、编译、运行三个步骤。
第1步,编写程序。使用记事本或其他软件编写程序的源代码,将源代码保存为文件filename.java文件。
第2步,编译程序。在MS-DOS命令窗口,将当前目录转换到Java源程序所在的保存目录;输入“javac filename.java”形式的命令进行程序编译。
第3步,执行程序。在同样的命令窗口中输入“java filename”形式的命令执行程序。
完成了程序的开发,查看相应t目录,其中应该具有两个文件,分别是XXXX.java和XXXX.class。
如果是开发网页应用,开发流程大概是这样的:
搭建开发平台,一般使用的是j2ee
编写DAO层,建立数据库
编写业务层action
编写显示文件jsp、html
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
public class CreateFile {
public static void main(String[] args) {
String str = "需要写入的字";
String fileName = "D:\\a\\a.xml";
OutputStream output = null;// 输出字节流
OutputStreamWriter outputWrite = null;// 输出字符流
PrintWriter print = null;// 输出缓冲区
try {
output = new FileOutputStream(fileName);
outputWrite = new OutputStreamWriter(output);
print = new PrintWriter(outputWrite);
print.print(str);
print.flush();// 一定不要忘记此句,否则数据有可能不能被写入文件
output.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
再一个问题就是只要你编码正确就可以正常打开。
帮你改了一下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class logon extends JFrame {
public static void main(String args[]) {
logon a=new logon();
a.show();
}
CheckboxGroup ShenFen=new CheckboxGroup();
Checkbox ShenFen1;
Checkbox ShenFen2;
Checkbox ShenFen3;
JButton LogonButton,Exit;
JTextField id;
JPasswordField password;
public logon(){
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setLayout(null);
setTitle("学生选课系统");
setSize(600,600);
ShenFen1=new Checkbox("学生",ShenFen,true);
ShenFen2=new Checkbox("教师",ShenFen,false);
ShenFen3=new Checkbox("管理员",ShenFen,false);
add(ShenFen1);
add(ShenFen2);
add(ShenFen3);
ShenFen1.setBounds(300, 350, 50, 50);
ShenFen2.setBounds(350, 350, 50, 50);
ShenFen3.setBounds(400, 350, 50, 50);
LogonButton=new JButton("登录");
add(LogonButton);
Exit=new JButton("退出");
add(Exit);
Exit.setBounds(400, 400,60, 60);
id=new JTextField();
add(id);
id.setBounds(300, 200, 200, 30);
password=new JPasswordField();
add(password);
password.setBounds(300, 250, 200, 30);
}
}
如果是你一个人开发,那就照着需求一步步做呗。比如:
首先要有登录界面,登录界面设计好,需要传入的参数有 用户名,密码,登录身份;这时你就设计一个数据库表 user(login_name,login_password,login_type);这时候登录进去,因为不同人的权限工作内容不同,因此登录进去显示的界面和选项也不同,你需要设计3种界面(学生:单一的查询成绩(此时你就需要创建一个学生表student(id,name,score));教师:查看学生成绩以及自己的教学科目,此时创建一个教师表teacher(id,name,course);管理员:这个页面设计是重头戏,数据处理先做好(以@RequestMapping(“/xxxx.do”)为主,设计rest api用于提供页面请求接口,建议使用spring_servlet和hibernate配合实现,使用MVC分层设计。
项目:完成一个电商系统的商品模块功能,商品类包含以下属性:商品ID, 商品名,类别名,单价,库存量,产地,计量单位等信息,要求实现商品管理功能以及管理员功能,具体如下:
1.管路员登录(账号密码固定admin/admin)
2.修改管理员密码
3.商品添加
4.商品列表
5.查询指定id商品
6.根据商品id删除商品
7.根据id修改商品价格
8.根据id修改指定商品库存
9.根据商品类别查询所有商品
10.查询指定价格区间的商品信息
根据项目要求,我们首先分析题目,知道此项目至少四个类:管理员类、商品类、系统类、测试类。
由于我们决定对此系统进行优化,要求能够对数据进行保存,所以我们用流的相关知识,将数据写入已经创建好的文档中,使其自动读写,以便管理,三个文档分别用于保存商品信息、id、user。