【发布时间】:2018-10-17 03:45:39
【问题描述】:
我正在用 maven 编写一个 Spring Boot 应用程序。但是最近我将 JDK 升级到 10,Lombok stable 停止使用它。我认为这将是开始使用 Kotlin 的一个很好的借口。但我对带有 Spring Boot 应用程序的 Kotlin 数据类的外观不满意。
Java 示例:
@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(exclude = {"creator", "content"})
public class Document {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
private String id ;
@Size(min = 4, max = 100)
private String name;
@ManyToOne
@Column(updatable = false)
private User creator;
@OneToOne(cascade = CascadeType.ALL)
private Content content;
@ManyToOne
private Project project;
@NotNull
@Column(updatable = false)
@JsonFormat(pattern = "yyyy/MM/dd hh:mm:ss")
private LocalDateTime creationDate;
@NotNull
@LastModifiedDate
@JsonFormat(pattern = "yyyy/MM/dd hh:mm:ss")
private LocalDateTime lastModified;
@ManyToOne
@LastModifiedBy
private User modificator;
}
示例 Kotlin:
@Entity
data class Document(@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
val id: String,
@Size(min = 4, max = 100)
val name: String,
@ManyToOne
@JoinColumn(updatable = false)
private val creator: User,
@OneToOne(cascade = arrayOf(CascadeType.ALL))
private val content: Content,
@ManyToOne
@JoinColumn(updatable = false)
val project: Project,
@NotNull
@Column(updatable = false)
@JsonFormat(pattern = "yyyy/MM/dd hh:mm:ss")
val creationDate: LocalDateTime,
@NotNull
@LastModifiedDate
@JsonFormat(pattern = "yyyy/MM/dd hh:mm:ss")
private val lastModified: LocalDateTime,
@ManyToOne
@LastModifiedBy
private val modificator: User
)
这让我的代码真的不可读。你有什么模板应该如何编写spring boot数据类吗?或者如何使用 Kotlin 的所有优势将现有的 Java 类转换为 Kotlin?
我正在使用 IntelliJ Idea 社区版 2018.1。或者你有更好的主意来像模型类一样持久化 Lombock?
【问题讨论】:
-
我看不出有什么区别,除了你的空格分号选择。
-
两者都不可读,但这是另一个讨论的主题(注释通常会使代码不可读,这是显而易见的不幸事实)。
-
为什么你认为它不可读?您可以在变量之间添加更多空格。它将与您的 Java 代码非常相似
-
如果您不喜欢它的外观,您不必将 Model 类转换为 Kotlin。 Kotlin 可以选择 .java 类。
-
正如@ChirdeepTomar 提到的,Kotlin 支持与 Java 的互操作性。除非您需要重写此代码,否则只需按原样使用该类即可节省资源 - 不要浪费本可用于其他领域的宝贵时间。
标签: java spring spring-boot kotlin spring-data