什么是单体应用
就是只有一个项目启动,并没有启动微服务,多台服务器,多个端口。
单体应用锁的使用
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
@RestController
@Slf4j
public class LockController {
private Lock lock =new ReentrantLock();
@RequestMapping("singleLock")
public String singleLock() {
log.info("进入了方法");
lock.lock();
try {
log.info("进入了锁");
Thread.sleep(60000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
return "执行成功!";
}
}
启动项目,然后通过Postman测试
可以看到单体项目的多个请求访问,lock能够阻塞住请求。
等待一分钟,释放锁
接着,我们再次开启一个项目,复制一个Application,将端口8081启动
再次测试,访问两个项目
锁就失效了,这就是单体应用的时候会出现的问题。