小编gma*_*tti的帖子

Kotlin - 在 Android 中转换 Singleton DatabaseController 的最佳方法

我正在从“Kotlin in Action”中学习 Kotlin,我正在慢慢地将 Android 应用程序代码转换为它。但是我在转换以下类时发现了一些问题。

public class DatabaseController {
  private static DatabaseController sDatabaseController;

  private SQLiteDatabase mDatabase;

  private DatabaseController(Context context) {
    mDatabase = new SQLiteOpenHelperImpl(context.getApplicationContext())
            .getWritableDatabase();
  }

  public static DatabaseController getDatabaseController(Context context) {
    if (sDatabaseController == null) {
        sDatabaseController = new DatabaseController(context);
    }
    return sDatabaseController;
  }

  public void addElement(Element element) {
    if (element != null) {
        ContentValues values = getContentValues(element);

        mDatabase.beginTransaction();
        try {
            // insert element
            mDatabase.setTransactionSuccessful();
        } finally {
            mDatabase.endTransaction();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我提出了两种不同的 Kotlin 实现,但它们都不能完全说服我。哪一个可以被认为是更好的解决方案?或者是否存在第三个更好的?

使用对象的第一个实现

object DatabaseControllerObject …
Run Code Online (Sandbox Code Playgroud)

android kotlin

5
推荐指数
1
解决办法
2044
查看次数

将异常与结构化参数一起记录

有谁知道记录异常和结构化参数的最佳实践是什么?查看https://github.com/logstash/logstash-logback-encoder#customizing-stack-traces,建议不要使用它们,但没有提供替代方案。

java slf4j logstash-logback-encoder

5
推荐指数
1
解决办法
2367
查看次数

DefaultOAuth2AuthorizedClientManager 和 AuthorizedClientServiceOAuth2AuthorizedClientManager 之间有什么区别

查看文档,我发现的唯一建议是

DefaultOAuth2AuthorizedClientManager 设计为在 HttpServletRequest 的上下文中使用。在 HttpServletRequest 上下文之外操作时,请改用 AuthorizedClientServiceOAuth2AuthorizedClientManager。

我可以使用Servlet 请求范围之外的WebClient方式测试调用是否挂起,但是,如果我在 Servlet 请求的上下文中使用,则不会发生任何奇怪的情况。那么,他们两个有什么区别呢?DefaultOAuth2AuthorizedClientManagerAuthorizedClientServiceOAuth2AuthorizedClientManager

spring-security spring-boot spring-security-oauth2

4
推荐指数
1
解决办法
1908
查看次数