第一次提交

This commit is contained in:
dzj 2023-08-14 09:19:43 +08:00
commit c03020069e
12 changed files with 300 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/

59
docker-compose.yml Normal file
View File

@ -0,0 +1,59 @@
version: '3.1'
services:
db:
image: mysql:latest
container_name: mysql01
restart: always
ports:
- "3309:3306"
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: 'Y9i-83204585'
MYSQL_DATABASE: 'demo01'
volumes:
- d:/docker-data/mysql:/var/lib/mysql
redis:
image: redis:latest
container_name: redis01
restart: always
ports:
- "7379:6379"
command: redis-server --requirepass "y9i-83204585"
volumes:
- d:/docker-data/redis:/data
elasticsearch:
image: elasticsearch:8.8.1
container_name: elastic01
restart: always
ports:
- '9200:9200'
- '9300:9300'
volumes:
- d:/docker-data/es:/usr/share/elasticsearch/data
environment:
- discovery.type=single-node
- xpack.security.enabled=false
labels:
org.springframework.boot.service-connection: elasticsearch
kafka:
image: bitnami/kafka:3.5
container_name: kafka01
restart: always
ports:
- "9092:9092"
- "9094:9094"
environment:
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_ENABLE_KRAFT=yes
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
volumes:
- d:/docker-data/kafka:/bitnami/kafka

67
pom.xml Normal file
View File

@ -0,0 +1,67 @@
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>net.risesoft</groupId>
<artifactId>demo01</artifactId>
<version>1.0</version>
<name>demo01</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-docker-compose</artifactId>
</dependency>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</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;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Demo01Application {
//
public static void main(String[] args) {
SpringApplication.run(Demo01Application.class, args);
}
}

View File

@ -0,0 +1,29 @@
package net.risesoft.demo;
import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import net.risesoft.demo.entity.User;
import net.risesoft.demo.repository.UserRepository;
@Component
public class OnApplicationReady implements ApplicationListener<ApplicationReadyEvent> {
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
System.out.println(event.getApplicationContext().getEnvironment().getProperty("path"));
String[] ss = event.getApplicationContext().getBeanNamesForType(ConnectionDetails.class);
for (String s : ss) {
System.out.println(s);
}
UserRepository userRepository = event.getApplicationContext().getBean(UserRepository.class);
User user = new User();
user.setName("张三");
user.setAge(20);
userRepository.save(user);
}
}

View File

@ -0,0 +1,27 @@
package net.risesoft.demo.controller;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import net.risesoft.demo.entity.User;
import net.risesoft.demo.repository.UserRepository;
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserRepository userRepository;
public UserController(UserRepository userRepository) {
super();
this.userRepository = userRepository;
}
@GetMapping
public List<User> findAll(){
return userRepository.findAll();
}
}

View File

@ -0,0 +1,20 @@
package net.risesoft.demo.entity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@Data
@NoArgsConstructor
public class User {
@Id
@GeneratedValue
private Integer id;
private String name;
private Integer age;
}

View File

@ -0,0 +1,11 @@
package net.risesoft.demo.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import net.risesoft.demo.entity.User;
@Repository
public interface UserRepository extends JpaRepository<User,Integer>{
}

View File

@ -0,0 +1,40 @@
package org.springframework.boot.docker.compose.service.connection.kafka;
import java.util.List;
import org.springframework.boot.autoconfigure.kafka.KafkaConnectionDetails;
import org.springframework.boot.docker.compose.core.RunningService;
import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory;
import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionSource;
class KafkaDockerComposeConnectionDetailsFactory extends DockerComposeConnectionDetailsFactory<KafkaConnectionDetails> {
KafkaDockerComposeConnectionDetailsFactory() {
super("bitnami/kafka");
}
@Override
protected KafkaConnectionDetails getDockerComposeConnectionDetails(DockerComposeConnectionSource source) {
return new KafkaDockerComposeConnectionDetails(source.getRunningService());
}
static class KafkaDockerComposeConnectionDetails extends DockerComposeConnectionDetails
implements KafkaConnectionDetails {
private final List<String> bootstrapServers;
KafkaDockerComposeConnectionDetails(RunningService service) {
super(service);
this.bootstrapServers = List.of("localhost:9094");
// this.bootstrapServers =
// List.of(service.env().get("bootstrapServers").split(","));
}
@Override
public List<String> getBootstrapServers() {
return this.bootstrapServers;
}
}
}

View File

@ -0,0 +1,4 @@
# Connection Details Factories
org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\
org.springframework.boot.docker.compose.service.connection.kafka.KafkaDockerComposeConnectionDetailsFactory

View File

@ -0,0 +1 @@
spring.jpa.generate-ddl=true