Java實(shí)現(xiàn)可配置換膚的方法示例
夏天來了,是不是要給App換個夏天主題的皮膚呢?但是夏天過去后再換回默認(rèn)皮膚難道還需要再重新發(fā)版么。不需要的,下面來編寫個通用的配置項接口,可以做個讓運(yùn)營可配置的APP換膚功能。只要切換參數(shù)值,就可以讓App換回原來的皮膚。
接口設(shè)計
在設(shè)計接口前,需要考慮的是可能不只換膚需要頁面聯(lián)動變化,其他功能也需要,例如APP不同的版本,某個功能是否展示。這種通用的配置項,都可以使用一個接口返回。
所以考慮擴(kuò)展性,使用自定義key\value方式傳值,和前端約定功能的key、value來設(shè)置APP展示效果就可以啦。
body需要包含最基本的是參數(shù)的key、參數(shù)的value。 例如 {"key":"skin","value":"summer"}
數(shù)據(jù)庫設(shè)計
由于夏季換膚功能是保證可復(fù)用性,比如總會出的某項活動,不需要每次都要研發(fā)的功能,就可以找到原有的配置繼續(xù)使用。所以可將配置類存儲到數(shù)據(jù)庫表中,并且在后臺運(yùn)營系統(tǒng)增加切換設(shè)置功能頁面。
DROP TABLE IF EXISTS app_config;
CREATE TABLE app_config(
ID VARCHAR(32) NOT NULL COMMENT 'ID' ,
KEY VARCHAR(255) COMMENT '配置標(biāo)識' ,
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配置表';邏輯代碼
實(shí)體類
@ApiModel(value = "App配置表",description = "")
@Table(name="app_config")
public class AppConfig implements Serializable,Cloneable{
/** ID */
@Id
@GeneratedValue
@ApiModelProperty(name = "ID",notes = "")
private String id ;
/** 配置標(biāo)識 */
@ApiModelProperty(name = "配置標(biāo)識",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è)置,是放在后端可維護(hù)的全局配置,列舉如下不同的設(shè)置。
- 夏季皮膚設(shè)置:
{
"key": "skin",
"value": "Summer"
}- 春節(jié)皮膚設(shè)置:
{
"key": "skin",
"value": "SpringFestival"
}最后
本文是以夏天換膚一個功能視角帶入的配置接口,很多App中可以使用通用配置的地方都可以按上面增加的這個配置類進(jìn)行切換本身配置,讓我們的App更靈活,減少發(fā)版次數(shù)。
到此這篇關(guān)于Java實(shí)現(xiàn)可配置換膚的方法示例的文章就介紹到這了,更多相關(guān)Java 可配置換膚內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java ArrayList和Vector的區(qū)別詳解
這篇文章主要介紹了java ArrayList和Vector的區(qū)別詳解的相關(guān)資料,并附簡單實(shí)例代碼,需要的朋友可以參考下2016-11-11
Java中常見延時隊列的實(shí)現(xiàn)方案小結(jié)(建議收藏)
延時隊列它要具有隊列的特性,再給它附加一個延遲消費(fèi)隊列消息的功能,也就是說可以指定隊列中的消息在哪個時間點(diǎn)被消費(fèi),這篇文章主要介紹了Java中常見延時隊列的實(shí)現(xiàn)方案總結(jié),需要的朋友可以參考下2024-04-04
使用 Java 類 實(shí)現(xiàn)Http協(xié)議
這篇文章主要介紹了用幾個Java類簡單的實(shí)現(xiàn)了Http協(xié)議相關(guān)資料,感興趣的的朋友可以參考下面具體的文章內(nèi)容2021-09-09
IDEA 集成log4j將SQL語句打印在控制臺上的實(shí)現(xiàn)操作
這篇文章主要介紹了IDEA 集成log4j將SQL語句打印在控制臺上的實(shí)現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
java線程中synchronized和Lock區(qū)別及介紹
這篇文章主要為大家介紹了java線程中synchronized和Lock區(qū)別及介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
mybatis中查詢結(jié)果為空時不同返回類型對應(yīng)返回值問題
這篇文章主要介紹了mybatis中查詢結(jié)果為空時不同返回類型對應(yīng)返回值問題,本文分幾種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下2019-10-10

