2018-7-30关于spring+maven+mysql的配置小记

关于spring+maven+mysql的配置学习

由于入坑java被迫得学习spring等框架于是乎在阳光明媚的早晨我苦逼的看起了spring的doc

本文主要借鉴了https://blog.csdn.net/wanghuiqi2008/article/details/46239753这篇博文,在此基础上由于我有新软件强迫症所以遇到了几个不大不小的问题

问题一

误区不理解maven

由于不理解maven的用法错误的理解为只是一个普通的项目管理工具类似git所以自行的github clone了spring5的源码编译试图导入idea进行操作(因为idea默认集成的spring工程只有spring4的)在编译中遇到了 javadoc无法编译的异常 于是看了看官方的issue和csdn的各种博文发现spring的编译的时候默认的makefile(\spring-framework\gradle\docs.gradle)是在linux下进行的所以文件目录在windows下会出现异常具体如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
task schemaZip(type: Zip) {
group = "Distribution"
baseName = "spring-framework"
classifier = "schema"
description = "Builds -${classifier} archive containing all " +
"XSDs for deployment at http://springframework.org/schema."
duplicatesStrategy 'exclude'
moduleProjects.each { subproject ->
def Properties schemas = new Properties();
subproject.sourceSets.main.resources.find {
it.path.endsWith("META-INF\spring.schemas")
}?.withInputStream { schemas.load(it) }
for (def key : schemas.keySet()) {
def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
assert shortName != key
File xsdFile = subproject.sourceSets.main.resources.find {
it.path.endsWith(schemas.get(key))
}
assert xsdFile != null
into (shortName) {
from xsdFile.path
}
}
}

经过观察发现是因为目录名在windows下\没有转义造成的于是乎就有了以下的改动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
task schemaZip(type: Zip) {
group = "Distribution"
baseName = "spring-framework"
classifier = "schema"
description = "Builds -${classifier} archive containing all " +
"XSDs for deployment at http://springframework.org/schema."
duplicatesStrategy 'exclude'
moduleProjects.each { subproject ->
def Properties schemas = new Properties();

subproject.sourceSets.main.resources.find {
it.path.endsWith("META-INF\\spring.schemas")
}?.withInputStream { schemas.load(it) }

for (def key : schemas.keySet()) {
def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1')
assert shortName != key
File xsdFile = subproject.sourceSets.main.resources.find {
it.path.endsWith(schemas.get(key).replaceAll('\\/','\\\\'))
}
assert xsdFile != null
into (shortName) {
from xsdFile.path
}
}
}

另外如果编译出现提示javadoc的乱码用edit打开后删除乱码的注释就好了

然而这却不是正确食用maven+spring+mysql 的方法

maven管理工具

通俗的讲就是自动帮你找包在哪个网站自动帮你下载的一个苦力 有点类似pip但是没那么恰当哈哈

关于详细的配置方法就不在此复述了

搭建mysql时候遇到的坑

最新版的依赖以及语法问题

由于我有 最新版本 软件使用强迫症 所以笔者使用的mysql8 可能写的时候又更新了。。 在https://blog.csdn.net/wanghuiqi2008/article/details/46239753 这篇博文中作者方法没有任何错误但是我却遇到了 branch mysql异常的错误
在此对比早期的连接语句和8后的改变:

jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf-8

jdbc:mysql://localhost:3306/mysql?characterEncoding=utf-8&serverTimezone=Hongkong&useSSL=false

可以看到连接语句在连接方面新增了serverTimezone和useSSL两个设置前者必须要设置后者不设置的话会有警告(一片红不过能运行)


版本依赖问题

由于编写csdn博文的作者编写的比较早使用的一个依赖有点老笔者强迫症用 latest 时候荣幸的报错了

Error:(47, 38) java: 无法访问org.springframework.dao.DataAccessException
找不到org.springframework.dao.DataAccessException的类文件

这样一个报错
此时我的xml配置部分如下:

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>LATEST</version>
</dependency>

经过查看官方maven网站发现依赖的变更

1
2
3
4
5
 <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.18.RELEASE</version>
</dependency>

再次运行发现解决问题不再报错

最后感慨一句 还是python舒服 😔
ε=ε=ε=┏(゜ロ゜;)┛