不可变构造函数注入 Kotlin 类的正确方法

Posted

技术标签:

【中文标题】不可变构造函数注入 Kotlin 类的正确方法【英文标题】:Correct approach for immutable constructor injected Kotlin class 【发布时间】:2016-01-24 08:31:09 【问题描述】:

用 Spring + Kotlin 声明不可变构造函数注入类的正确方法是什么?目前我有:

@RestController
public class AuthorizationController

    @Inject
    lateinit var facebookAuth: FacebookAuthorizationService //Mutable?

    @RequestMapping("/authorization")
    public fun authorization(@RequestParam(value = "network-type", defaultValue = "Facebook") name: String,
                             @RequestParam(value = "oauth-token") oauthToken: String,
                             @RequestParam(value = "oauth-token-secret",
                                     required = false) oauthTokenSecret: String?): Authorization
    
        //TODO: Handle other network types
        return facebookAuth.authorization(oauthToken)
    

我希望 facebookAuth 属性是不可变的。

【问题讨论】:

【参考方案1】:

这里对Kotlin的经验不多,但我觉得一定要用

public class AuthorizationController @Inject constructor(private val facebookAuth: FacebookAuthorizationService) 

    ...


【讨论】:

以上是关于不可变构造函数注入 Kotlin 类的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 中的私有构造函数

Kotlin学习之路:继承

记录文件、类和构造函数的正确方法是啥?

转向Kotlin——类和接口

Kotlin类的初始化 ② ( 主构造函数 | 主构造函数定义临时变量 | 主构造函数中定义成员属性 | 次构造函数 | 构造函数默认参数 )

Bean的注入