spring-boot 相关问题

Spring Boot可以轻松创建Spring驱动的生产级应用程序和服务,并且可以轻松实现。它采用了Spring平台的观点,以便新用户和现有用户可以快速获得他们需要的位。

如何通过单个 Jakarta/Hibernate 验证器使用所有注释进行验证?

我正在使用 Jakarta/Hibernate 来验证 Java 中的一些字段。 问题是数据模型是从 Swagger 文件生成的,因此所有 Jakarta 注释(如 @Size 或 @Pattern)都是自动生成的。 我

回答 1 投票 0

如何在log4j2-spring.xml中设置Log Pattern来记录类方法和行

我正在尝试设置日志模式以打印日志文件中的类方法和行。以下是我的配置。它与控制台一起工作正常,但与异步不工作 我正在尝试设置日志模式以打印日志文件中的类方法和行。以下是我的配置。它可以与控制台一起使用,但不能与异步一起使用 <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN" monitorInterval="30"> <Properties> <Property name="LOG_PATTERN" value="%d [%thread] [%-5level] [%class{36}.%M %L] [Content-Id:%X{contentId}] [Request-Id:%X{requestId}] [%c{1.}] - %msg%n" /> <Property name="LOG_DIR" value="logs" /> <Property name="SYSTEM_FILE" value="application.log" /> </Properties> <Appenders> <Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern="${LOG_PATTERN}" /> </Console> <Async name="Async"> <AppenderRef ref="FileAppender" /> </Async> <RollingFile name="FileAppender" fileName="${LOG_DIR}/${SYSTEM_FILE}" filePattern="${LOG_DIR}/${SYSTEM_FILE}-%d{yyyy-MM-dd}-%i.log"> <PatternLayout> <Pattern>${LOG_PATTERN}</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="10MB" /> </Policies> <DefaultRolloverStrategy max="100" /> </RollingFile> </Appenders> <Loggers> <Logger name="com.myproject" level="debug" additivity="false"> <AppenderRef ref="ConsoleAppender" /> <AppenderRef ref="Async" /> </Logger> <Root level="info"> <AppenderRef ref="ConsoleAppender" /> <AppenderRef ref="Async" /> </Root> </Loggers> 我正在使用这个 [%class{36}.%M %L] 模式来记录类方法和行。 感谢您的支持。 在 Java 中检索调用者位置是一项昂贵的操作。它总是需要某种堆栈遍历。 如果一切都是同步的,Log4j 会在需要时延迟检索位置。但如果追加器或记录器是异步的,则必须在跳转线程之前检索位置。对于异步元素,这会使日志记录速度减慢 5 到 20 倍。这就是为什么在这些情况下位置默认被禁用。 您可以使用 includeLocation 属性启用位置: 对于异步附加程序使用: <Async name="Async" includeLocation="true"> <AppenderRef ref="FileAppender" /> </Async> 对于异步记录器(需要额外的依赖项,参见文档)使用: <AsyncLogger name="com.myproject" level="DEBUG" additivity="false" includeLocation="true"> <AppenderRef ref="ConsoleAppender" /> </AsyncLogger> 另一种解决方案(如果您使用的是 Maven)是使用最近发布的 log4j-transform-maven-plugin,它在编译时计算位置,因此不再需要运行时查找并且位置始终可用。只需将其添加到您的 POM 文件中(参见文档): <build> [...] <plugins> <plugin> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-transform-maven-plugin</artifactId> <version>0.1.0</version> <executions> <execution> <goals> <goal>process-classes</goal> </goals> </execution> </executions> </plugin> </plugins> [...] </build> 免责声明:我是log4j-maven-transform-plugin的主要作者。 作为 Piotr 答案的替代方案,我开发了一个插件,能够在构建时检索类和行号并通过 SLF4J 的 MDC 记录它: slf4j-caller-info-maven-插件 您只需: 添加到pom.xml: <build> <plugins> <plugin> <groupId>io.github.philkes</groupId> <artifactId>slf4j-caller-info-maven-plugin</artifactId> <version>1.1.0</version> <executions> <execution> <goals> <goal>inject</goal> </goals> </execution> </executions> </plugin> </plugins> </build> 在您的 %X{callerInformation} 中的任何位置包含 log4j2-spring.xml,在您的示例中: ... <Pattern>%d [%thread] [%-5level] [%X{callerInformation}] [Content-Id:%X{contentId}] [Request-Id:%X{requestId}] [%c{1.}] - %msg%n</Pattern> ... 这同样适用于同步和异步日志记录。 由于该插件在构建期间评估类和行号,因此与 Log4J 的 [%class{36}.%M %L] 相比,没有性能损失。

回答 2 投票 0

如何在@SpringBootTest中禁用休眠播种/删除模式?

我在我的一项测试中使用@SpringBootTest。 当我运行测试时,它通过了,但它在日志中抛出一些有关删除架构的错误。 我想关闭模式操作...

回答 1 投票 0

Spring 集成 TCP 服务器到客户端请求响应

我有一个用例,我需要使用 TCP 套接字向外部系统发出请求并等待响应。我知道如果我作为客户端连接,则可以使用 Spring Integration Outbound Gateway....

回答 1 投票 0

Spring Boot - RESTAPI 的 Web 与 Webflux

我正在尝试决定是使用 Spring Web 还是 Webflux 作为 RESTAPI。 我已经完成了研究,并在论坛上从很多开发人员那里了解到,Webflux 并不是那么好,因为它有多困难......

回答 1 投票 0

这两种方法中哪种 Restful 方法被认为是最佳实践?

我正在开发用于电子商务的 springboot 软件,我对与某些 RestController 一起使用的最佳方法有疑问。 实际示例:如果我需要将产品添加到我的愿望清单中,我...

回答 1 投票 0

使用 AUTH0 进行身份验证 && Spring boot

我对 Spring 中的身份验证很陌生,我目前是第一次尝试。 我的应用程序中有一些端点。其中一些要求我从外部获取用户信息

回答 1 投票 0

使用 postgres 和 springboot 时遇到问题

包 com.abc.calendar.calendarapi.model; 导入龙目岛。*; 导入 java.util.Date; 导入java.util.List; 导入java.util.Map; 导入 jakarta.persistence.Column; 导入 jakarta.persistence.Ent...

回答 0 投票 0

有没有办法在@Profile()注释中动态添加值,而不是像@Profile({"dev", "SIT"})那样?

我有兴趣在云配置/应用程序属性文件中保留一个字段,如下例所示 例如: 应用程序: 配置文件:“${spring.profiles.active}” 然后在Java代码中读取这个值或者

回答 1 投票 0

如何在byte[]和Flux之间进行转换<DataBuffer>

我需要在业务逻辑消耗请求正文之前读取请求正文。 所以我计划在我的网络过滤器中执行以下操作: 将 DataBuffer 的 Flux 转换为 byte[] 按照我的意愿使用 byte[] 附上一个...

回答 2 投票 0

如何生成这个 Spring-boot API 文档示例?

我正在尝试追踪一个已经离开公司的开发人员是如何生成一些 Java Spring-boot API 的。该文档如下所示: 我们有招摇,但这看起来没什么

回答 1 投票 0

我在使用 Spring Boot 3.2.5 解决电子邮件发送错误时遇到问题

我一直在使用 Spring Boot 3.2.5 实现电子邮件发送功能,但我似乎无法解决错误,所以我在这里寻求帮助 代码和电子邮件在其他人的计算机上运行良好,...

回答 1 投票 0

如何配置Spring WebClient以重用访问令牌

我正在尝试使用 spring WebClient 访问一些 OAuth2 安全的 REST 服务。它可以工作,但似乎它不会在请求之间重用访问令牌。我从密码授予开始,然后

回答 1 投票 0

为什么我的用户使用 Spring Boot 通过 OAuth2 登录后是匿名的?

我正在尝试通过Github将OAuth授权连接到我的项目,但成功后我的用户保持匿名: @RestController @RequestMapping(路径=“/”) 公共类 HomeController {...

回答 1 投票 0

如何在Spring WebFlux服务中无阻塞地处理数据。线程reactor-http-nio-2不支持异常block()

我需要从数据库获取结果并处理两条记录。 Flux 货币Flux =currencyRepository.findByCurrencyNameIn(List.of(from,to)) .地图(

回答 1 投票 0

spring initializr CLI 给出错误消息 spring groupid is not a recognized option

关于最简单的用例 spring init --groupId com.example hi Spring initialzr CLI 给出错误消息 groupId 不是一个可识别的选项 SpringBoot 版本为 3.3.0

回答 1 投票 0

Spring Boot 3.2.4 + Springdoc OpenAPI:“规范中没有定义操作!”在 Swagger UI 中

我正在开发 Spring Boot 应用程序(版本 3.2.4)并使用 Springdoc OpenAPI(版本 2.0.4)生成 API 文档。但是,当我打开 Swagger UI 时,我看到消息“No opera...

回答 1 投票 0

IllegalStateException:无法自省类

我正在尝试在 SpringBoot 应用程序上实现扩展功能,其中 @ComponentScan 应该扫描类路径中存在的单独 jar 中的 bean 定义。 @Compone...

回答 1 投票 0

如何在 Java Spring 上等待订阅者完成 TEXT_EVENT_STREAM

使用返回字符串的 Stream API,我希望有一个函数可以在单个字符串上返回它们,并用分隔符分隔,当前使用订阅并附加到列表 使用返回字符串的 Stream API 时,我想要一个函数将它们返回到由定界符分隔的单个字符串上,当前使用订阅并附加到列表,但显然,因为异步不会等待它准备好返回该功能之前。 如何实现非异步方法? private String executeStream(String streamId, UserToken currentUserAndToken) { List<String> combinedString = new ArrayList<String>(); URI streamUri = UriComponentsBuilder.newInstance() .scheme("https") .host(host) .path(streamPath) .buildAndExpand(streamVariablesMap) .toUri(); webClientt.get() .uri(streamUri) .headers(h -> h.setBearerAuth(currentUserAndToken.getToken())) .accept(MediaType.TEXT_EVENT_STREAM) // for Server-Sent Events (SSE) .retrieve() .bodyToFlux(String.class) // convert the response body to a Flux .subscribe(data -> combinedString.add(data)); // < --- Here I want to combine all Data into single string return String.join(", ", combinedString); } 使用 .blockLast() 代替 .subscribe() 它将阻塞,直到你读完所有。这将使您的呼叫同步。请参阅https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#blockLast--

回答 1 投票 0

如何让 Java Testcontainers 在 Spring Boot 中与 ComposeContainer 和 R2DBC Postgres 配合使用?

在本地运行我的代码效果非常好。为此,我将 R2DBC 与 postgres 一起使用。 我的正常 compose.yml 文件如下所示: 服务: 我的数据库: 容器名称:我的数据库 userns_mode:保持...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.