web專案設定全域性變數
阿新 • • 發佈:2019-02-12
在某些場景中,運營人員需要自定義某些值來控制一些業務。而那些值一般活動於整個專案。
比如動態設定過濾值去過濾評分低的內容,
動態設定是否載入某平臺的資源,
動態設定等等
下面內容是在公司專案中遇到,總結記錄方便以後查詢和幫助需要的朋友。
第一步:建立一個表:配置表configuration;和資料字典很相似。
DROP TABLE IF EXISTS `configuration`; CREATE TABLE `configuration` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(100) COLLATE utf8_bin NOT NULL, `value` varchar(100) COLLATE utf8_bin NOT NULL, `note` varchar(255) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; INSERT INTO `configuration` VALUES ('1', 'defaultNum', '50000', '運營人員可自定義的值');
第二步:建立實體類
package net.wecheer.entity; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Transient; import cn.weidrive.qc.annotation.QueryField; @Entity @Table(name = "configuration") public class Configuration extends IdEntity { private String name; // 配置名 private String value; // 配置值 private String note; // 註釋說明 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } @Transient public int getIntValue(int defaultValue) { try { int iValue = Integer.parseInt(value); return iValue; } catch (NumberFormatException e) { return defaultValue; } } @Transient public float getFloatValue(float defaultValue) { try { float fValue = Float.parseFloat(value); return fValue; } catch (NumberFormatException e) { return defaultValue; } } }
因為value在表中對應型別是varchat;然而實際業務中還可能是整形或者是浮點型。
第三步:Dao層,使用的是springMVC框架
package net.wecheer.repository; import net.wecheer.entity.Configuration; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.repository.PagingAndSortingRepository; public interface ConfigurationDao extends PagingAndSortingRepository<Configuration, Long>, JpaSpecificationExecutor<Configuration> { Configuration findByName(String name); }
按照springMVC的規範,findByName便可以做到通過name找到對應的Configuration
第四步:Service層
// 以下三個函式用於方便取得配置值的函式,分別對應字串、整形和浮點型
public String getConfigValueByName(String name, String defaultValue) {
Configuration config = configDao.findByName(name);
if (null == config)
return defaultValue;
else
return config.getValue();
}
public int getConfigValueByName(String name, int defaultValue) {
Configuration config = configDao.findByName(name);
if (null == config)
return defaultValue;
else {
try {
int iValue = Integer.parseInt(config.getValue());
return iValue;
} catch (NumberFormatException e) {
return defaultValue;
}
}
}
public float getConfigValueByName(String name, float defaultValue) {
Configuration config = configDao.findByName(name);
if (null == config)
return defaultValue;
else {
try {
float fValue = Float.parseFloat(config.getValue());
return fValue;
} catch (NumberFormatException e) {
return defaultValue;
}
}
}
如果你想要long型和double型可以自行新增,注意這裡的一個技巧,預設的時候有一個預設值。第五步:在web專案中全域性呼叫
@Autowired
private ConfigurationService configService;
int defaultNum= configService.getConfigValueByName("defaultNum", 50000);
轉載請註明來源