liuyuqi-dellpc 4 months ago
parent
commit
3341a31b14

+ 4 - 14
README.md

@@ -1,19 +1,9 @@
-# Getting Started
+# minio-demo
 
-### Reference Documentation
 
-For further reference, please consider the following sections:
 
-* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
-* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/3.3.0-SNAPSHOT/maven-plugin/reference/html/)
-* [Create an OCI image](https://docs.spring.io/spring-boot/docs/3.3.0-SNAPSHOT/maven-plugin/reference/html/#build-image)
-* [Spring Web](https://docs.spring.io/spring-boot/docs/3.3.0-SNAPSHOT/reference/htmlsingle/index.html#web)
+## Prerequisites
 
-### Guides
-
-The following guides illustrate how to use some features concretely:
-
-* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
-* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
-* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/)
+## Reference
 
+## License

+ 36 - 2
pom.xml

@@ -5,23 +5,57 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>3.3.0-SNAPSHOT</version>
+        <version>3.1.3-SNAPSHOT</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
+
     <groupId>io.github.jianboy</groupId>
     <artifactId>minio-demo</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
+    <version>1.0.1-SNAPSHOT</version>
     <name>minio-demo</name>
     <description>minio-demo</description>
     <properties>
         <java.version>21</java.version>
     </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.68</version>
+        </dependency>
+
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>8.2.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-devtools</artifactId>
+            <optional>true</optional> <!-- 表示依赖不会传递 -->
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>

+ 3 - 1
src/main/java/io/github/jianboy/miniodemo/Swagger2.java

@@ -1,2 +1,4 @@
-package io.github.jianboy.miniodemo;public class Swagger2 {
+package io.github.jianboy.miniodemo;
+
+public class Swagger2 {
 }

+ 29 - 1
src/main/java/io/github/jianboy/miniodemo/config/CorsConfig.java

@@ -1,2 +1,30 @@
-package io.github.jianboy.miniodemo.config;public class CorsConfig {
+package io.github.jianboy.miniodemo.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+@Configuration
+public class CorsConfig {
+
+    @Bean
+    public WebMvcConfigurer corsConfigurer() {
+        return new WebMvcConfigurer() {
+
+            @Override
+            public void addCorsMappings(org.springframework.web.servlet.config.annotation.CorsRegistry registry) {
+                registry.addMapping("/**")
+                        .allowedOrigins("*")
+                        .allowedMethods("*")
+                        .allowCredentials(true)
+                        .allowedMethods("GET", "POST", "DELETE", "PUT")
+                        .exposedHeaders("access-control-allow-headers",
+                                "access-control-allow-methods",
+                                "access-control-allow-origin",
+                                "access-control-max-age",
+                                "X-Frame-Options","token")
+                        .allowedHeaders("*");
+            }
+        };
+    }
 }

+ 28 - 1
src/main/java/io/github/jianboy/miniodemo/config/MinioConfig.java

@@ -1,2 +1,29 @@
-package io.github.jianboy.miniodemo.config;public class MinioConfig {
+package io.github.jianboy.miniodemo.config;
+
+import io.minio.MinioClient;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MinioConfig {
+    @Value("${minio.endpoint}")
+    private String endpoint;
+
+    @Value("${minio.accessKey}")
+    private String accessKey;
+
+    @Value("${minio.secretKey}")
+    private String secretKey;
+
+    @Value("${minio.bucketName}")
+    private String bucketName;
+
+    @Bean
+    public MinioClient minioClient() {
+        return MinioClient.builder()
+                .endpoint(endpoint)
+                .credentials(accessKey, secretKey)
+                .build();
+    }
 }

+ 17 - 1
src/main/java/io/github/jianboy/miniodemo/controller/IndexController.java

@@ -1,2 +1,18 @@
-package io.github.jianboy.miniodemo.controller;public class IndexController {
+package io.github.jianboy.miniodemo.controller;
+
+import io.swagger.annotations.Api;
+import org.springframework.stereotype.Controller;
+import boot.spring.domain.AjaxResult;
+import boot.spring.domain.Fileinfo;
+
+@Api(tags = "文件操作接口")
+@Controller
+public class IndexController {
+    public AjaxResult index(){
+        return AjaxResult.success();
+    }
+
+    public AjaxResult listBucket(){
+        return AjaxResult.success();
+    }
 }

+ 16 - 0
src/main/resources/application.yml

@@ -1 +1,17 @@
+server:
+  port: 8080
 
+logging:
+  config: classpath:log4j2.xml
+
+spring:
+  servlet:
+    multipart:
+      max-file-size: 100MB
+      max-request-size: 1000MB
+
+# minio 配置
+minio:
+  endpoint: http://127.0.0.1:9000  #对象存储服务的URL
+  accessKey: minioadmin #Access key账户
+  secretKey: minioadmin  #Secret key密码

+ 96 - 0
src/main/resources/log4j2.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration status="off">
+    <Properties>
+        <!-- 日志存储路径 -->
+        <Property name="baseDir">./logs</Property>
+    </Properties>
+    <CustomLevels>
+        <CustomLevel name="AUDIT" intLevel="50" />
+    </CustomLevels>
+
+    <Appenders>
+        <Console name="console" target="SYSTEM_OUT">
+            <PatternLayout charset="UTF-8" pattern="[%-5p] [%d{HH:mm:ss}] %c - %m%n" />
+        </Console>
+
+        <!-- 自定义 -->
+        <RollingFile name="RollingFileAUDIT" fileName="${baseDir}/logservice-web/audit-log/audit-log.log"
+                     filePattern="${baseDir}/logservice-web/audit-log/audit-log-%i.log">
+            <ThresholdFilter level="AUDIT" onMatch="ACCEPT" onMismatch="DENY" />
+            <PatternLayout pattern="[%d{yyyy/MM/dd HH:mm:ssS}][%p][LOGSERVICE][日志系统]%m%n" />
+            <Policies>
+                <SizeBasedTriggeringPolicy size="10 MB" />
+            </Policies>
+            <!-- 保存最大文件个数 -->
+            <DefaultRolloverStrategy max="50" />
+        </RollingFile>
+
+        <!--Trace级别日志输出-->
+        <RollingFile name="system-trace" fileName="${baseDir}/logservice-web/trace.log"
+                     filePattern="${baseDir}/logservice-web/trace-%i.log">
+            <Filters>
+                <ThresholdFilter level="debug" onMatch="DENY" onMismatch="NEUTRAL" />
+                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" />
+            </Filters>
+            <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][LOGSERVICE][日志系统][%l]%n%m%n" />
+            <Policies>
+                <!-- 日志文件大小 -->
+                <SizeBasedTriggeringPolicy size="10 MB" />
+            </Policies>
+            <!-- 保存最大文件个数 -->
+            <DefaultRolloverStrategy max="50" />
+        </RollingFile>
+        <!--Info级别日志输出-->
+        <RollingFile name="system-info" fileName="${baseDir}/logservice-web/info.log"
+                     filePattern="${baseDir}/logservice-web/info-%i.log">
+            <Filters>
+                <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL" />
+                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
+            </Filters>
+            <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][LOGSERVICE][日志系统][%l]%n%m%n" />
+            <Policies>
+                <SizeBasedTriggeringPolicy size="10 MB" />
+            </Policies>
+            <DefaultRolloverStrategy max="50" />
+        </RollingFile>
+        <!--Debug级别日志输出-->
+        <RollingFile name="system-debug" fileName="${baseDir}/logservice-web/debug.log"
+                     filePattern="${baseDir}/logservice-web/debug-%i.log">
+            <Filters>
+                <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL" />
+                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" />
+            </Filters>
+            <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][LOGSERVICE][日志系统][%l]%n%m%n" />
+            <Policies>
+                <SizeBasedTriggeringPolicy size="10 MB" />
+            </Policies>
+            <DefaultRolloverStrategy max="50" />
+        </RollingFile>
+        <!--Error级别日志输出-->
+        <RollingFile name="system-error" fileName="${baseDir}/logservice-web/error.log"
+                     filePattern="${baseDir}/logservice-web/error-%i.log">
+            <Filters>
+                <ThresholdFilter level="AUDIT" onMatch="DENY" onMismatch="NEUTRAL" />
+                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" />
+            </Filters>
+            <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][LOGSERVICE][日志系统][%l]%n%m%n" />
+            <Policies>
+                <SizeBasedTriggeringPolicy size="10 MB" />
+            </Policies>
+            <DefaultRolloverStrategy max="50" />
+        </RollingFile>
+    </Appenders>
+    <Loggers>
+        <logger name="io.netty" level="INFO"></logger>
+        <logger name="org.springframework" level="INFO"></logger>
+        <logger name="org.elasticsearch" level="INFO"></logger>
+        <root level="INFO">
+            <appender-ref ref="console" />
+            <appender-ref ref="system-info" />
+            <appender-ref ref="system-trace" />
+            <appender-ref ref="system-debug" />
+            <appender-ref ref="system-error" />
+            <appender-ref ref="RollingFileAUDIT" />
+        </root>
+    </Loggers>
+</configuration>