Я пытаюсь перенести некоторые примеры кода spring-webflux
в kotlin.
В настоящее время я хочу преобразовать мой Spring Data Mongo образец для котлина. Есть User
, оригинальная версия Data Mongo выглядит так:
@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document
class User implements UserDetails {
@Id
private String id;
private String username;
private String password;
@Builder.Default()
private boolean active = true;
@Builder.Default()
private List<String> roles = new ArrayList<>();
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return AuthorityUtils.createAuthorityList(roles.toArray(new String[roles.size()]));
}
@Override
public boolean isAccountNonExpired() {
return active;
}
@Override
public boolean isAccountNonLocked() {
return active;
}
@Override
public boolean isCredentialsNonExpired() {
return active;
}
@Override
public boolean isEnabled() {
return active;
}
}
Интерфейс UserDetails
включает в себя некоторые методы getXXX и isXXX, как добавить override
к свойствам username
и password
в kotlin?
Кстати: в настоящее время я удалил UserDetails
в версии kotlin, проверьте здесь:
@Document
data class User(
@Id var id: String? = null,
var username: String? = null,
var password: String? = null,
var active: Boolean = true,
var roles: List<String> = ArrayList()
)
ОБНОВЛЕНИЕ:Как добавить к нему интерфейс , этот вопрос полезен.UserDetails
?
Новая проблема заключается в том, что при использовании уничтожения это не работает.
(id, username, password, active, roles) = <a user>
User
находится https://github.com/hantsy/spring-reactive-sample/blob/master/kotlin-gradle/src/main/kotlin/com/example/demo/User.kt . На данный момент я закомментировал реализованную версию UserDetails
. Если я использую закомментированные коды (User:UserDetails), коды desstruction
в Beans.kt
будут сообщать об ошибках в IDE. Ошибки возникают на username
и password
: удаление инициализатора объявления типа User! должна иметь функцию component2.