Finology 大数据金融

通过大数据以量化金融

使用 IntelliJ IDEA 开发 Spring Boot 项目。在自动注入时,会出现红色波浪线的错误提示。如图:

如果代码正确,能够正常运行。那我们可以通过如下两种方法解决。

添加@Repository注解

查看一下是不是 Mapper 类忘了写 @Repository 注解。

设置IDEA

进入 Editor -> Inspections -> Spring -> Spring Core -> Autowiring for Bean Class

把选中的勾去掉就可以了。

我使用了 mysql-connector-java-8.0.19,运行程序时报错:

1
2
3
java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.
You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more
specifc time zone value if you want to utilize time zone support.

按错误提示,需要在 spring.datasource.url 添加 serverTimezone=Asia/Shanghai 参数或者 GMT%2b8 表示 GMT+8 ,有些网友说写 CTT,我不知道写台湾的时区有啥意义。

1
2
3
4
spring:
# jdbc配置
datasource:
url: jdbc:mysql://localhost:3306/db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false

如果mysql-connector-java用的6.0以上的,需要把com.mysql.jdbc.Driver 改为com.mysql.cj.jdbc.Driver,不然每次启动项目,都会有红色提示。

我们在 Spring Boot 项目中通过 Druid Spring Boot Starter 来集成 Druid 数据库连接池和监控。

加入依赖

添加 druid-spring-boot-starter maven 依赖。

截止 Nov, 2019, 最新版本是 1.1.21。

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.21</version>
</dependency>

添加配置

在 application.yml 配置文件里面添加如下必填信息。注:H2 内存数据库啥也不填都可以。

1
2
3
4
spring.datasource.druid.url= # 或spring.datasource.url= 
spring.datasource.druid.username= # 或spring.datasource.username=
spring.datasource.druid.password= # 或spring.datasource.password=
spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=
1
2
3
4
5
6
7
8
9
10
11
12
spring:
# jdbc配置
datasource:
url: jdbc:mysql://localhost:3306/springboot-mybatis-plus?useUnicode=true&characterEncoding=utf8&useSSL=false
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver

druid:
initial-size: 5
max-active: 5
min-idle: 5

如果使用 MySQL,还需要添加 MySQL 驱动依赖。

1
2
3
4
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>

不然就会报错 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

还有添加 jdbc starter。

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<exclusions>
<exclusion>
<artifactId>HikariCP</artifactId>
<groupId>com.zaxxer</groupId>
</exclusion>
</exclusions>
</dependency>

不然就会报错:java.lang.ClassNotFoundException: org.springframework.dao.DataAccessException

当然,如果使用 mybatis plus 这类框架,可以直接添加 mybatis-plus-boot-starter,它也会依赖 jdbc 的。

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
<exclusions>
<exclusion>
<artifactId>HikariCP</artifactId>
<groupId>com.zaxxer</groupId>
</exclusion>
</exclusions>
</dependency>

值得注意的是,默认会添加 HikariCP 的依赖,我们使用了 Druid 后,需要把 HikariCP 排除在外。

最后,我们可以打印看看 dataSource:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
CreateTime:"2020-04-06 15:04:34",
ActiveCount:0,
PoolingCount:5,
CreateCount:5,
DestroyCount:0,
CloseCount:0,
ConnectCount:0,
Connections:[
{ID:1011276990, ConnectTime:"2020-04-06 15:04:34", UseCount:0, LastActiveTime:"2020-04-06 15:04:34"},
{ID:1750563752, ConnectTime:"2020-04-06 15:04:34", UseCount:0, LastActiveTime:"2020-04-06 15:04:34"},
{ID:285781448, ConnectTime:"2020-04-06 15:04:34", UseCount:0, LastActiveTime:"2020-04-06 15:04:34"},
{ID:145329976, ConnectTime:"2020-04-06 15:04:34", UseCount:0, LastActiveTime:"2020-04-06 15:04:34"},
{ID:33558975, ConnectTime:"2020-04-06 15:04:34", UseCount:0, LastActiveTime:"2020-04-06 15:04:34"}
]
}
0%