首次提交

This commit is contained in:
dzj 2024-01-19 07:17:14 +08:00
commit ed64c2e649
10 changed files with 205 additions and 0 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* text=auto eol=lf

28
.gitignore vendored Normal file
View File

@ -0,0 +1,28 @@
# Build and Release Folders
target/
# Eclipse
.settings/
*.classpath
*.project
*.factorypath
# IntelliJ IDEA
.idea
*.iml
# vscode
.vscode
# JRebel
rebel.xml
# macOS
.DS_Store
# svn
.svn/
# vue
kernel-standard/
node_modules/

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# spring-virtual-thread
## Jmeter Test results :
### Platform Thread
![Screenshot 2023-12-16 at 9 53 22 AM](https://github.com/Java-Techie-jt/spring-virtual-thread/assets/25712816/03978099-4df3-4686-a6e6-8eb1f28ab69f)
### Virtual Thread
![Screenshot 2023-12-16 at 9 59 04 AM](https://github.com/Java-Techie-jt/spring-virtual-thread/assets/25712816/2f82ae30-41f3-4f29-a1de-10e6661840cf)

69
pom.xml Normal file
View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.risesoft</groupId>
<artifactId>demo03</artifactId>
<version>1.0</version>
<name>demo03</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,13 @@
package net.risesoft.demo.virtualthread;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class VtTestApplication {
public static void main(String[] args) {
SpringApplication.run(VtTestApplication.class, args);
}
}

View File

@ -0,0 +1,29 @@
package net.risesoft.demo.virtualthread.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import lombok.extern.slf4j.Slf4j;
import net.risesoft.demo.virtualthread.entity.Product;
import net.risesoft.demo.virtualthread.repository.ProductRepository;
@RestController
@RequestMapping("/products")
@Slf4j
public class ProductController {
@Autowired
private ProductRepository productRepository;
@GetMapping
public List<Product> getProducts() throws InterruptedException {
Thread.sleep(1000);
log.info("Thread info {} ", Thread.currentThread());
return productRepository.findAll();
}
}

View File

@ -0,0 +1,15 @@
package net.risesoft.demo.virtualthread.entity;
import jakarta.persistence.*;
import lombok.Data;
@Entity
@Data
@Table(name = "PRODUCT_TBLS")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Long price;
}

View File

@ -0,0 +1,8 @@
package net.risesoft.demo.virtualthread.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import net.risesoft.demo.virtualthread.entity.Product;
public interface ProductRepository extends JpaRepository<Product,Long> {
}

View File

@ -0,0 +1,20 @@
server:
port: 9191
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/y9_public
username: root
password: '12345678'
jpa:
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
properties:
hibernate:
dialect: org.hibernate.dialect.MySQLDialect
show-sql: true
threads:
virtual:
enabled: true

View File

@ -0,0 +1,13 @@
package com.javatechie;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class VtTestApplicationTests {
@Test
void contextLoads() {
}
}