微服务配置中心 Apollo解析——Portal 创建 App,这操作真香

本文深入解析了Apollo微服务配置中心中创建App的过程,包括Portal侧的实现细节,如App实体类的设计,使用Hibernate的ORM框架,以及如何通过事件驱动实现App的创建与同步到Admin Service。在创建App时,涉及数据的验证、持久化以及逻辑删除等机制,同时阐述了为何需要在Portal和Admin Service间同步App信息。
摘要由CSDN通过智能技术生成

* 部门名

*

* 冗余字段

*/

@Column(name = “OrgName”, nullable = false)

private String orgName;

/**

* 拥有人名

*

* 例如在 Portal 系统中,使用系统的管理员账号,即 UserPO.username 字段

*/

@Column(name = “OwnerName”, nullable = false)

private String ownerName;

/**

* 拥有人邮箱

*

* 冗余字段

*/

@Column(name = “OwnerEmail”, nullable = false)

private String ownerEmail;

}

  • ORM 选用 Hibernate 框架。

  • @SQLDelete(…) + @Where(…) 注解,配合 BaseEntity.extends 字段,实现 App 的逻辑删除

  • 字段比较简单,胖友看下注释。

2.1 BaseEntity

com.ctrip.framework.apollo.common.entity.BaseEntity ,基础实体抽象类。代码如下:

@MappedSuperclass

@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)

public abstract class BaseEntity {

/**

* 编号

*/

@Id

@GeneratedValue

@Column(name = “Id”)

private long id;

/**

* 是否删除

*/

@Column(name = “IsDeleted”, columnDefinition = “Bit default ‘0’”)

protected boolean isDeleted = false;

/**

* 数据创建人

*

* 例如在 Portal 系统中,使用系统的管理员账号,即 UserPO.username 字段

*/

@Column(name = “DataChange_CreatedBy”, nullable = false)

private String dataChangeCreatedBy;

/**

* 数据创建时间

*/

@Column(name = “DataChange_CreatedTime”, nullable = false)

private Date dataChangeCreatedTime;

/**

* 数据最后更新人

*

* 例如在 Portal 系统中,使用系统的管理员账号,即 UserPO.username 字段

*/

@Column(name = “DataChange_LastModifiedBy”)

private String dataChangeLastModifiedBy;

/**

* 数据最后更新时间

*/

@Column(name = “DataChange_LastTime”)

private Date dataChangeLastModifiedTime;

/**

* 保存前置方法

*/

@PrePersist

protected void prePersist() {

if (this.dataChangeCreatedTime == null) dataChangeCreatedTime = new Date();

if (this.dataChangeLastModifiedTime == null) dataChangeLastModifiedTime = new Date();

}

/**

* 更新前置方法

*/

@PreUpdate

protected void preUpdate() {

this.dataChangeLastModifiedTime = new Date();

}

/**

* 删除前置方法

*/

@PreRemove

protected void preRemove() {

this.dataChangeLastModifiedTime = new Date();

}

// … 省略 setting / getting 方法

}

  • @MappedSuperclass 注解,见 《Hibernate 中 @MappedSuperclass 注解的使用说明》 文章。

  • @Inheritance(…) 注解,见 《Hibernate(11)映射继承关系二之每个类对应一张表(@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)》 文章。

  • id 字段,编号,Long 型,全局自增。

  • isDeleted 字段,是否删除,用于逻辑删除的功能。

  • dataChangeCreatedBy 和 dataChangeCreatedTime 字段,实现数据的创建人和时间的记录,方便追踪。

  • dataChangeLastModifiedBy 和 dataChangeLastModifiedTime 字段,实现数据的更新人和时间的记录,方便追踪。

  • @PrePersist、@PreUpdate、&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值