环境配置
- vscode
- java extension pack
需要安装vscode插件java extension pack
安装包
使用软件包仓库安装,版本随你的仓库有所不同,但是jre和jdk必须都要安装,否则只安装jre的话,vscode的插件无法正常找到你的jdk路径,然后会报错
我用的是aptitude,将apt包装成gui的仓库管理工具,安装下面两个包
- openjdk-11-jdk
- openjdk-11-jre
这个时候就可以使用vscode插件的功能了
spring-boot插件
spring boot initializer
可以使用上面的插件启动spring项目。
mvn
我将启动的spring项目加入git后,在另外一台机器上运行
Error: Could not find or load main class org.apache.maven.wrapper.MavenWrapperMain
Caused by: java.lang.ClassNotFoundException: org.apache.maven.wrapper.MavenWrapperMain
看样子我没有将.mvn文件夹加入git仓库,导致clone下来之后缺少.mvn文件夹中的内容
pom.xml
描述依赖等信息,其中对于某种依赖scope
非常重要
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<!--scope>annotationProcessor</scope-->
</dependency>
比如如果上面scope不被注释掉,那么lombok就无法在编译的时候被引入,然后会在maven编译项目的时候出错
在新的springboot框架内,validation已经被移除,如果想要使用javax.validataion
需要手动加入以下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
application.properties
在使用spring的嵌入式数据库时,新版本默认的h2数据库名称需要手动在resources/application.properties
这个文件里指定
spring.datasource.url=jdbc:h2:mem:testdb
否则在ocalhost:8080/h2-console使用默认的mem:testdb连接时会出错
keyholder返回值为空
PreparedStatementCreatorFactory preparedStatementF = new PreparedStatementCreatorFactory(
"insert into Taco (name, createdAt) values (?, ?)",
Types.VARCHAR, Types.TIMESTAMP
);
preparedStatementF.setReturnGeneratedKeys(true);
PreparedStatementCreator psc = preparedStatementF.newPreparedStatementCreator(
Arrays.asList(
taco.getName(),
new Timestamp(taco.getCreatedAt().getTime())));
https://stackoverflow.com/questions/53655693/keyholder-getkey-return-null