最近宣布支持 Exchange Online 中的 IMAP 和 SMTP 的 OAuth 2.0。按照指南,我设置了应用程序权限以及 IMAP 和 SMTP 连接。应用程序配置为Accounts in any organizational directory (Any Azure AD directory - Multitenant)
并使用授权代码流。
以下 URL 用于授权:
并且添加了以下委派 Microsoft Graph 范围:
范围,来自代码的请求:
final List<String> scopes = Arrays.asList(
"offline_access",
"email",
"openid",
"profile",
"User.Read",
"Mail.ReadWrite",
"https%3A%2F%2Foutlook.office365.com%2FIMAP.AccessAsUser.All",
"https%3A%2F%2Foutlook.office365.com%2FSMTP.Send"
);
Run Code Online (Sandbox Code Playgroud)
我成功收到访问和刷新令牌:
{
"token_type": "Bearer",
"scope": "email IMAP.AccessAsUser.All Mail.ReadWrite openid profile SMTP.Send User.Read",
"expires_in": 3599,
"ext_expires_in": 3599,
"access_token": "edited",
"refresh_token": "edited",
"id_token": "edited"
}
Run Code Online (Sandbox Code Playgroud)
这是用于连接到 …
我们有一个Hibernate-gnerated域对象的拼凑,例如
@Entity
@Table(name = "events_t", schema = "public")
public class EventsT implements java.io.Serializable {
private int id;
private RecallsT recallsT; // another table
}
Run Code Online (Sandbox Code Playgroud)
使用Spring Data,我无法做到
RecallsT recallsT = recallsDAO.findById(recallId);
Run Code Online (Sandbox Code Playgroud)
我被迫做了
Optional<RecallsT> recallsT = recallsDAO.findById(recallId);
Run Code Online (Sandbox Code Playgroud)
但这引入了另一个问题:现在我不能再使用我的Hibernate对象,因为这不起作用:
eventsT.setRecallsT(recallsT);
Run Code Online (Sandbox Code Playgroud)
现在错误将是它无法将"Optional <...>"对象放入普通对象中.正如我在Hibernate实体中所展示的那样,由于我们生成域对象的传统方式,setter采用直接的普通对象.
该怎么办?
我有一个库 xyz,它为我提供了一个 CompletableFuture,我想在我的 Vertx (v3.5) 事件循环中处理它。目前我正在使用CompletableFuture.handle(BiFunction)(见下文),但我想使用CompletableFuture.handleAsync(BiFunction, Executor),但我无法弄清楚如何在此方法调用中向第二个参数提供 vertx 事件循环线程.
我尝试在Vertx.runOnContext() 中执行整个代码,但 handleAsync 内部的调用仍然在 Java 的 ForkJoin 池上执行,我想避免这种情况。
CompletableFuture<Void> f = xyz.someMethod();
f.handle((v, th) -> { //Want to run this in handleAsync()
if (th == null) {
future.complete(null);
} else {
future.completeExceptionally(th);
}
return null;
});
Run Code Online (Sandbox Code Playgroud)