kotlin - 构建器模式功能无法在 SpringBoot Kotlin 应用程序中工作
问题描述
我有用户类配置文件类并且我想使用构建器模式并传递用户,配置文件类数据但是当使用用户类调用构建器函数时,构建器函数会抛出错误以导入构建器函数的根文件,但它显示了很多导入文件需要为构建器功能导入哪个文件
FacebookService.kt
package com.nilmani.mychat.service
import com.nilmani.mychat.client.FacebookClient
import com.nilmani.mychat.ezception.InternalServerException
import com.nilmani.mychat.model.InstaUserDetails
import com.nilmani.mychat.model.Profile
import com.nilmani.mychat.model.Role
import com.nilmani.mychat.model.User
import com.nilmani.mychat.model.facebook.FaceBookUser
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.data.mongodb.core.aggregation.MergeOperation.UniqueMergeId.id
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken
import org.springframework.stereotype.Service
import java.util.*
@Service
class FacebookService {
@Autowired
private lateinit var facebookClient: FacebookClient
@Autowired
private lateinit var userService: UserService
@Autowired
private lateinit var jwtTokenProvider: JwtTokenProvider
fun loginUser(fbAccessToken: String) :String {
val faceBookUser = facebookClient.getUser(fbAccessToken)
return userService.findById(faceBookUser.id)
.or { Optional.ofNullable(userService.register(convertTo(faceBookUser), Role.FACEBOOK_USER)) }
.map { user: User ->
InstaUserDetails(
user.id,
user.userName,
user.password,
user.email,
user.createdAt,
user.updatedAt,
user.active,
user.userProfile,
user.role
)
}
.map { userDetails ->
UsernamePasswordAuthenticationToken(
userDetails, null, userDetails.getAuthorities()
)
}
.map(jwtTokenProvider::generateToken)
.orElseThrow { InternalServerException("unable to login facebook user id " + faceBookUser?.id) }
}
private fun convertTo(faceBookUser: FaceBookUser): User {
return User.builder(
id = faceBookUser.id,
email = faceBookUser.email,
username = generateUsername(faceBookUser.firstName,faceBookUser.lastName)
.userProfile(
Profile.builder(
displayName(java.lang.String.format("%s %s",faceBookUser.firstName,faceBookUser.lastName))
)
.profilePictureUrl(faceBookUser.picture.pictureData.url)
.build()
)
.build()
)
}
private fun generateUsername(firstName: String, lastName: String): Any {
val rand =Random()
val number = rand.nextInt(999999)
return String.format("%s.%s.%06d",firstName,lastName,number)
}
}
我在 convertTo() 遇到问题。我在图片中定义的红色彩色文本中出现错误
convertTo 函数的 Builder() 行下发生错误
return User.builder(
id = faceBookUser.id,
email = faceBookUser.email,
username = generateUsername(faceBookUser.firstName,faceBookUser.lastName)
.userProfile(
Profile.builder(
displayName(java.lang.String.format("%s %s",faceBookUser.firstName,faceBookUser.lastName))
)
.profilePictureUrl(faceBookUser.picture.pictureData.url)
.build()
)
.build()
解决方案
推荐阅读
- java - java.lang.NullPointerException:尝试调用虚拟方法'java.lang.String android.os.Bundle.getString(java.lang.String)'
- mysql - 在 MY-SQL 中将多个不存在的值一起插入。其中“NULL”应该是唯一的
- awk - 如何在双引号内使用 awk 变量?
- c - 这段代码是什么意思?fopen (pthis -> fname,w)
- hadoop - 如何使用 InputStream 读取 orcFile?
- apache-spark - 在 Spark 中安排任务
- javascript - 我收到 [Violation] 'setInterval' 处理程序在 chrome dev 中收到 N ms 警告,然后该应用程序被冻结
- c - 如何在c中的for循环中实现协程
- pdf - 互操作 PowerPoint 笔记页面
- spring-security - Spring:Mvc Rest api error=“invalid_grant”,error_description=“Bad credentials” in Spring oauth2 jdbc