Java實現(xiàn)可配置換膚的方法示例
夏天來了,是不是要給App換個夏天主題的皮膚呢?但是夏天過去后再換回默認皮膚難道還需要再重新發(fā)版么。不需要的,下面來編寫個通用的配置項接口,可以做個讓運營可配置的APP換膚功能。只要切換參數(shù)值,就可以讓App換回原來的皮膚。
接口設(shè)計
在設(shè)計接口前,需要考慮的是可能不只換膚需要頁面聯(lián)動變化,其他功能也需要,例如APP不同的版本,某個功能是否展示。這種通用的配置項,都可以使用一個接口返回。
所以考慮擴展性,使用自定義key\value方式傳值,和前端約定功能的key、value來設(shè)置APP展示效果就可以啦。
body需要包含最基本的是參數(shù)的key、參數(shù)的value。 例如 {"key":"skin","value":"summer"}
數(shù)據(jù)庫設(shè)計
由于夏季換膚功能是保證可復(fù)用性,比如總會出的某項活動,不需要每次都要研發(fā)的功能,就可以找到原有的配置繼續(xù)使用。所以可將配置類存儲到數(shù)據(jù)庫表中,并且在后臺運營系統(tǒng)增加切換設(shè)置功能頁面。
DROP TABLE IF EXISTS app_config;
CREATE TABLE app_config(
ID VARCHAR(32) NOT NULL COMMENT 'ID' ,
KEY VARCHAR(255) COMMENT '配置標識' ,
VALUE VARCHAR(255) COMMENT '配置值' ,
CREATED_TIME DATETIME COMMENT '創(chuàng)建時間' ,
UPDATED_BY VARCHAR(32) COMMENT '更新人' ,
UPDATED_TIME DATETIME COMMENT '更新時間' ,
CREATED_BY VARCHAR(255) COMMENT '創(chuàng)建人' ,
REMARK VARCHAR(255) COMMENT '備注' ,
PRIMARY KEY (ID)
) COMMENT = 'App配置表';邏輯代碼
實體類
@ApiModel(value = "App配置表",description = "")
@Table(name="app_config")
public class AppConfig implements Serializable,Cloneable{
/** ID */
@Id
@GeneratedValue
@ApiModelProperty(name = "ID",notes = "")
private String id ;
/** 配置標識 */
@ApiModelProperty(name = "配置標識",notes = "")
private String key ;
/** 配置值 */
@ApiModelProperty(name = "配置值",notes = "")
private String value ;
/** 創(chuàng)建時間 */
@ApiModelProperty(name = "創(chuàng)建時間",notes = "")
private Date createdTime ;
/** 更新人 */
@ApiModelProperty(name = "更新人",notes = "")
private String updatedBy ;
/** 更新時間 */
@ApiModelProperty(name = "更新時間",notes = "")
private Date updatedTime ;
/** 創(chuàng)建人 */
@ApiModelProperty(name = "創(chuàng)建人",notes = "")
private String createdBy ;
/** 備注 */
@ApiModelProperty(name = "備注",notes = "")
private String remark ;
}jpa
添加Repository,用于獲取數(shù)據(jù)庫中App配置信息。
public interface AppConfigRepository extends JpaRepository<AppConfig, String> {
}controller
編寫獲取配置信息方法,一次性拿出全部配置,在前端取配置的key,根據(jù)具體業(yè)務(wù)處理接下來的換膚邏輯。
@GetMapping("/config")
public AppConfigDTO getAppConfigs() {
return appConfigRepository.findAll();
}返回示例
獲取到不同的value,來切換App的皮膚設(shè)置,是放在后端可維護的全局配置,列舉如下不同的設(shè)置。
- 夏季皮膚設(shè)置:
{
"key": "skin",
"value": "Summer"
}- 春節(jié)皮膚設(shè)置:
{
"key": "skin",
"value": "SpringFestival"
}最后
本文是以夏天換膚一個功能視角帶入的配置接口,很多App中可以使用通用配置的地方都可以按上面增加的這個配置類進行切換本身配置,讓我們的App更靈活,減少發(fā)版次數(shù)。
到此這篇關(guān)于Java實現(xiàn)可配置換膚的方法示例的文章就介紹到這了,更多相關(guān)Java 可配置換膚內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MyBatis加載映射文件和動態(tài)代理的實現(xiàn)
本文主要介紹了MyBatis加載映射文件和動態(tài)代理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
java比較器Comparable接口與Comaprator接口的深入分析
本篇文章是對java比較器Comparable接口與Comaprator接口進行了詳細的分析介紹,需要的朋友參考下2013-06-06
詳解Spring Data JPA系列之投影(Projection)的用法
本篇文章主要介紹了詳解Spring Data JPA系列之投影(Projection)的用法,具有一定的參考價值,有興趣的可以了解一下2017-07-07
在Idea2020.1中使用gitee2020.1.0創(chuàng)建第一個代碼庫的實現(xiàn)
這篇文章主要介紹了在Idea2020.1中使用gitee2020.1.0創(chuàng)建第一個代碼庫的實現(xiàn),文中通過圖文示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
IDEA調(diào)試技巧條件斷點實現(xiàn)步驟詳解
這篇文章主要介紹了IDEA調(diào)試技巧條件斷點實現(xiàn)步驟詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09

