我有一个 Spring Boot 应用程序,并使用 postgres 测试容器 ( https://www.testcontainers.org/ ) 和 JUnit编写了单元测试。测试具有 @SpringBootTest 注释,它在运行测试之前加载上下文并启动测试容器。
在我相对较旧的 Macbook 上加载上下文并启动容器大约需要 15 秒,但测试本身非常快(每个 < 100 毫秒)。因此,在包含 100 次测试的完整构建中,这并不重要。这是 15 秒的一次性成本。但是在 IDE 中单独开发/调试测试变得非常缓慢。每一次测试都会产生 15 秒的启动成本。
我知道 IntelliJ 和 Springboot 支持在应用程序运行时热重载类。对于单元测试是否有类似的解决方案/建议?即保持上下文加载和 testcontainer(DB) 运行,但只重新编译修改后的测试类并再次运行选定的测试。
我希望将源代码格式化程序Uncrustify与Vim 集成.以下两个选项中的任何一个都足够了.
gq按下时).选项1是优选的.我试过了
set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup
Run Code Online (Sandbox Code Playgroud)
即我用命令行选项调用Uncrustify.这不起作用.Vi给出了E518: Unknown option: ~/misc/uncrustify.cfg错误.
对于选项2,我在vimrc文件中尝试了以下内容
autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile>
Run Code Online (Sandbox Code Playgroud)
保存后文件格式化,但我必须手动将文件重新加载到Vim中.
我在 Springboot 中有一个使用 Hikari 进行连接池的 REST API。Hikari 使用默认配置(池中 10 个连接,等待连接超时 30 秒)。API本身非常简单
public ResponseEntity analyseData(int companyId) {
Company company = companyRepository.findById(companyId);//takes 20ms
Analysis analysis = callRemoteRestAPI(company.data) //takes 120seconds
return ResponseEntity.status(200).body(analysis);
}
Run Code Online (Sandbox Code Playgroud)
该代码没有任何@Transactional 注释。我发现 JDBC 连接在我的 API 的整个持续时间内(即约 120 秒)一直保持。因此,如果我们收到超过 10 个请求,它们就会在 hikari 连接池上等待超时(30 秒)。但严格来说,JPA 查询完成后(上面的步骤 1),我的 API 不需要连接。
有没有办法让 spring 在查询后立即释放此连接,而不是保留它直到整个 API 完成处理?Spring 可以配置为为每个 JPA 请求获取连接吗?这样,如果我有多个 JPA 查询,其中散布着非常慢的操作,服务器吞吐量不会受到影响,并且它可以处理超过 10 个并发 API 请求。。