SpringBoot 整合第三方资源

# 整合 junit

在依赖中只保留这两个

<!-- pom.xml -->

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12

然后这里写好了 /service/UserService.java/service/impl/UserServiceImpl.java

// UserService.java

public interface UserService {
    public void save ();
}

1
2
3
4
5
6
// UserServiceImpl.java

@Service
public class UserServiceImpl implements UserService {

    @Override
    public void save () {
        System.out.println("service save ...");
    }
}
1
2
3
4
5
6
7
8
9
10

/test 下的某个包的测试类,测试 main 中对应包下的配置类 SpringbootDemoApplication 所在的包以及子包下所有的类

比如现在已有的 com/snopzyz/SpringbootDemoAplicationTest.java
定位到 /com/snopzyz 下的配置类 com.snopzyz.SpringbootDemoApplicaiton ,所在包为 com.snopzyz
那么测试类只可以测试 com.snopzyz 下的类

// SpringbootDemoApplicationTests.java

@SpringBootTest
class SpringbootDemoApplicationTests {

    @Autowired
    private UserService userService;

    @Test
    void saveTest() {
        userService.save();
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

若这个测试类放在了 /com.snopzyz1 的位置,那么它可以用注解定位到 SpringbootDemoApplication 并测试它所在包下面的类(不常用)

package com.snopzyz1;

@SpringBootTest(classes = SpringbootDemoApplication.class)
class SpringbootDemoApplicationTests {
...
1
2
3
4
5

# 整合 SSM

虽然是整合 SSM 但是 Spring 和 SpringMVC 在之前的使用中都已经有了,所以这里重点只有 Mybatis

项目创建时勾选这两个依赖

20231003171705

由于 SpringBoot 已经整合好了 Mybatis 的配置数据连接,所以我们需要做的只有两件事:

  • 设置连接 mybatis 的 datasource
  • 编写被代理实现的接口类 BookDao

datasource 只在 application.yml 中设置就行了

# application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/learn_info
    username: 'root'
    password: 'xxxxxxxxxxxxx'
1
2
3
4
5
6
7
8

druid 的使用

先导入 druid 坐标

<!-- pom.xml -->

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.16</version>
</dependency>
1
2
3
4
5
6
7

在配置文件中将 type 设置为 DruidDataSource

# application.yml

spring:
  datasource:
    ...
    type: com.alibaba.druid.pool.DruidDataSource
1
2
3
4
5
6

这样就行了

代理实现接口的编写和之前基本一致
先来一个 domain 类

// Book.java
public class Book {

    private int id;
    private String name;
    private String type;
    private String description;
    ...
}
1
2
3
4
5
6
7
8
9

然后是我们的 Dao 接口,这里需要加一个 @Mapper 来告诉 SpringBoot 这个接口要做代理实现

// BookDao.java
@Mapper
public interface BookDao {

    @Select("SELECT * FROM tbl_book WHERE id=#{id}")
    public Book findById (int id);
}
1
2
3
4
5
6
7

最后拿测试跑一下代码看看结果

@SpringBootTest
class SpringBootSsmApplicationTests {

    @Autowired
    private BookDao bookDao;

    @Test
    void findByIdTest () {
        System.out.println(bookDao.findById(2));
    }

}
1
2
3
4
5
6
7
8
9
10
11
12

20231003175013

运行成功

2.4.2 版本及以前 MySql 的时区报错

将 url 后面加上 ?serverTimezone=UTC
也就是

spring:
  datasource:
    ...
    url: jdbc:mysql://localhost:3306/learn_info?serverTimezone=UTC
    ...
1
2
3
4
5

# 整合前端静态资源

做的和我们 SpringMVC+SSM+前端 是一样的效果
但是 config 包全都不用写了
页面静态访问资源控制按框架目录格式定好了,静态资源放在 resources/static
然后在 com.snopzyz.dao.BookDao 上面加一个我们上面说的 @Mapper 就行了
这是目录结构

20231003210752

Last Updated: 10/8/2023, 5:27:41 PM