From 7865d56f553fe3535a78ee9eaedd6ba6ffcaba6d Mon Sep 17 00:00:00 2001 From: TheWhiteDog9487 Date: Sat, 11 Oct 2025 16:41:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8SQLite=E5=86=99=E5=85=A5=E6=97=B6?= =?UTF-8?q?=E5=8A=A0=E9=94=81=EF=BC=8C=E9=81=BF=E5=85=8D=E5=86=99=E5=85=A5?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E5=AF=BC=E8=87=B4=E6=9C=AA=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=93=8D=E5=BA=94=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WebAPI/Controller/Filter/LogClientInfo.java | 6 ++++++ .../java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java index f91ab28..e5fe485 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/Filter/LogClientInfo.java @@ -15,6 +15,7 @@ import java.time.Instant; import java.util.Collections; import java.util.List; import java.util.Locale; +import java.util.concurrent.locks.Lock; @Slf4j @Component @@ -26,6 +27,7 @@ public class LogClientInfo implements Filter { "/accesslog"); @Autowired AccessLogRepository AccessLogRepository; + @Autowired Lock SQLiteWriteLock; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { @@ -54,12 +56,16 @@ public class LogClientInfo implements Filter { Instant.now(), null, null ); + SQLiteWriteLock.lock(); Log = AccessLogRepository.save(Log); + SQLiteWriteLock.unlock(); chain.doFilter(request, Response); var ResponseBody = IgnorePaths.stream() .anyMatch( path -> HttpServletRequest.getRequestURI().startsWith(path) ) ? null : new String( Response.getContentAsByteArray(), Response.getCharacterEncoding() ); Log.setResponseStatusCode(HttpServletResponse.getStatus()); Log.setResponseBody(ResponseBody); + SQLiteWriteLock.lock(); AccessLogRepository.save(Log); + SQLiteWriteLock.unlock(); Response.copyBodyToResponse(); } } \ No newline at end of file diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java b/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java index 95dbb27..d1eec4d 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/GlobalSharedBean.java @@ -13,6 +13,8 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; @Slf4j @Component @@ -50,4 +52,8 @@ class GlobalSharedBean { @Bean ApiKeyAuthenticationFilter ApiKeyAuthenticationFilter(){ return new ApiKeyAuthenticationFilter(); } + + @Bean + Lock SQLiteWriteLock(){ + return new ReentrantLock(); } }