我有一个 Spring Boot 应用程序,它将与两个数据库(Cassandra 和 DB2)进行通信。我将在此应用程序中使用 spring 数据。是否适用于只在application.yml文件中配置数据源,而不需要编写java代码?如果是这样,我如何指定每种语言的方言?
注意:此应用程序使用 spring-data-cassandra 作为 cassandra 数据库,使用 spring-data-jpa 作为 db2 数据库。
例如:
spring:
datasource:
url: jdbc:db2://myRemoteHost:portNumber/MyDBName
username: username
password: password
driver-class-name: com.ibm.db2.jcc.DB2Driver
data:
cassandra:
cluster-name: cluster name
keyspace-name: keyspace name
port: myPortNumber
contact-points: host1.com
username: username
password: password
Run Code Online (Sandbox Code Playgroud)
注意:此问题与Spring Boot 配置和使用两个数据源不同。我的问题是知道它是否适用于仅在 application.yml 文件中配置数据源而无需手动执行,而另一个问题解释了如何手动执行此操作。
在下面的代码中,当端点getPerson被命中时,响应将是一个 Person 类型的 JSON。Spring 如何转换CompletableFuture<Person>为Person?
@RestController
public class PersonController {
@Autowired
private PersonService personService;
@GetMapping("/persons/{personId}" )
public CompletableFuture<Person> getPerson(@PathVariable("personId") Integer personId) {
return CompletableFuture.supplyAsync(() -> personService.getPerson(personId));
}
}
Run Code Online (Sandbox Code Playgroud) 如何让 controllerAdvice 类捕获从 completablefutrue 抛出的异常。在下面的代码中,我有一个checkId抛出已检查异常的方法。我使用 completablefuture 调用此方法并将已检查的异常包装在 CompletionException 中。虽然我在控制器通知类中有一个处理程序方法,但它没有处理错误。
package com.example.demo.controller;
@RestController
public class HomeController {
@GetMapping(path = "/check")
public CompletableFuture<String> check(@RequestParam("id") int id) {
return CompletableFuture.supplyAsync(() -> {
try {
return checkId(id);
}
catch (Exception e) {
throw new CompletionException(e);
}
});
}
public String checkId(int id) throws Exception {
if (id < 0) {
throw new MyException("Id must be greater than 0");
}
return "id is good";
}
}
Run Code Online (Sandbox Code Playgroud)
——
package com.example.demo;
public class MyException extends …Run Code Online (Sandbox Code Playgroud) 我有一个 Gradle 项目,我在这个项目中使用 docker。当我执行命令时gradlew integrationTestDocker,出现以下错误。
OSError: Can not read file in context: \\?\C:\project\.gradle\6.6.1\executionHistory\executionHistory.lock
java ×3
java-8 ×2
spring ×2
docker ×1
gradle ×1
spring-boot ×1
spring-data ×1
spring-mvc ×1
windows ×1
yaml ×1