基于公司业务需求,最近我需要在一个用spring写的开源项目的基础上二次开发
这是我第一次接触spring框架,希望它能像Flask或Rails那样让我眼前一亮
Linux有update-alternatives,mac的jenv
就没那么好用
所以mac上被迫只安装一个jdk8,没法用jdk9以上的jshell
交互环境(实践一些Java语法只能靠online jdk了)
在mac开发环境上不需要安装maven,用Intellij自带的maven就够了;在Ubuntu上先安装jdk8再安装maven
maven install/package 编译出可执行文件后,通过nohup使之后台运行
2>1&
的意思是把stdout也重定向输出到nohup.out中
至于如何关掉nohup,jobs -l
不好使,一般用以下命令列出占用内存最大的进程再通过kill -9
去删
以下命令可以列出内存占用最高的几个进程,方便关掉java的nohup进程
ps aux --sort rss
我看这个视频入门spring
初始化spring项目可以在start.spring.io
中进行,也可在Intellij中进行
start.spring.io
创建spring项目的过程有点酷炫(像vultr),但我还是喜欢在IDE中创建项目
NewProject -> SpringInitializr
DAO我以前做安卓SQLite时有所理解,但是spring的service有点难以理解
controller我理解是解析前端发送的请求,调用service来处理业务,再调用dao来实现数据库操作
还是rails方便,dao和model合二为一、service和controller合二为一
还有一种理解是service相当于项目的子系统
我仿照官网教程导入org.springframework.web
包准备添加路由时一直报错,原来是我没导入spring的web组件
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
嗯,感觉照着官网的教程把controller写好了,Ctrl+R运行... 刚出现spring的LOGO,进程就结束了
process finished with exit code 1
网上找了下资料,我没有装tomcat服务器,需要一个HTTP服务器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
修改HTTP服务器运行的端口号
application.properties: server.port=8080
官方的单元测试样例代码,需要先掌握一个Java小知识static import
static import类似python的import *,用了之后节省代码Math.sqrt(4) 变 sqrt(4)
使用MockMvc的单元测试样例
@SpringBootTest
@AutoConfigureMockMvc
class DemoApplicationTests {
@Autowired
private MockMvc mvc;
@Test
public void getIndex() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/").accept(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.content().string(Matchers.equalTo("Index")));
}
}