@value 静态变量_springboot项目使用静态变量通过@Value注解获取配置文件内容
近期看到前同事寫的項目,有關geoserver的許多配置寫死在代碼中,每次更改環境的時候都需要去修改代碼,很麻煩,所以我就做了一下優化,將我解決的辦法記錄一下
1、修改之前的代碼
public?class?MapConstant?{public?static?class?Status{
????????//否
????????public?static?final?int?DISABLE = 0;
????????//是
????????public?static?final?int?ENABLE = 1;
????????public?static?final?String ESPG4326="latLonBoundingBox";
????????public?static?final?String ESPG21481="nativeBoundingBox";
????????//Geoserver服務相關參數
????????public?static?final?String RESTURLKey="gsmgr_resturl";
????????public?static?final?String RESTUSERKey="gsmgr_restuser";
????????public?static?final?String RESTUSERValue="admin";
????????public?static?final?String RESTPWKey="gsmgr_restpw";
????????public?static?final?String RESTPWValue="geoserver";
????????public?static?final?String GS_VERSIONKey="gsmgr_version";
????????public?static?final?String GS_VERSIONValue="2.15.1";
????????public?static?final?String GEO_SERVER_PATH="/application/geoserver/apache-tomcat-7.0.42/webapps/geoserver/data/workspaces";
????//geoserver相關信息
?????public?static?final?String BUNDLE_URL ="http://192.168.1.75:18080/geoserver/";
????????public?static?final?String USERNAME="admin";
????????public?static?final?String PASSWD="geoserver";
????????//postgres 數據庫鏈接參數
????????public?final?static?Map DATABASEPARAMS= new?HashMap() {
????????????{
????????????????put("dbtype", "postgis"?);
????????????????put("host","192.168.1.75");
????????????????put("port", 5432);
????????????????put("database","map");
????????????????put("user", "postgres");
????????????????put("passwd", "root");//test:root,pro:tckj80@80
????????????}
????????};
????}
?}
這是修改前的代碼,里面配置了geoserver和postgis相關信息,其他地方引用,導致切換很不方便
2、修改
①第一步,在application.yml配置文件中配置相關信息
server:??geoserver-path: E:/geoserver/apache-tomcat-7.0.42/webapps/geoserver/data/workspaces
??geoserver-url: http://192.168.1.75:18080/geoserver/
??geoserver-user: admin
??geoserver-password: geoserver
postgis:
??dbtype: postgis
??host: 192.168.1.75
??port: 5432
??database: map
??schema: public
??user: postgres
??passwd: root
②第二步,修改MapConstant 類
@Value("${server.geoserver-url}")????????public?static??String?BUNDLE_URL;
????????@Value("${server.geoserver-user}")
????????public?static??String?USERNAME;
????????@Value("${server.geoserver-password}")
????????public?static??String?PASSWD;
注意:這是第一次改的,這邊出現一個坑,由于變量都被static修飾,而只有普通變量才可以從配置文件獲取信息,所以這樣寫取出來的都是null
由于這個類里面配置信息在多出用到,現在如果把static去掉,那么就要修改其他代碼,代價過大,所以我通過其他方式對靜態變量賦值
我在此介紹兩種方式
第一種,修改MapConstant 類
@Configuration@Data
public?class?MapConstant {
????//需要配置的項
????public?static??String?BUNDLE_URL ;
????public?static??String?USERNAME;
????public?static??String?PASSWD;
????public?static??String?database ;
????
????public?static??String?db_host;
????public?static??String?db_port;
????public?static??String?db_type ;
????public?static??String?db_user;
????public?static??String?db_schema;
????public?static??String?db_password;
??
????public?static??String?GEO_SERVER_PATH;
????//設置geoserver信息
????@Value("${server.geoserver-url}")
????public?void?setBundleUrl(String?geoserverUrl) {
????????BUNDLE_URL = geoserverUrl;
????}
????@Value("${server.geoserver-user}")
????public?void?setUSERNAME(String?geoserverUser) {
????????MapConstant.USERNAME = geoserverUser;
????}
????@Value("${server.geoserver-password}")
????public?void?setPASSWD(String?geoserverPassword) {
????????MapConstant.PASSWD = geoserverPassword;
????}
????//設置postgis數據庫信息
????@Value("${postgis.schema}")
????public?void?setDb_schema(String?db_schema) {
????????MapConstant.db_schema = db_schema;
????}
????@Value("${postgis.database}")
????public?void?setDatabase(String?database) {
????????MapConstant.database = database;
????}
????@Value("${postgis.host}")
????public?void?setDb_host(String?db_host) {
????????MapConstant.db_host = db_host;
????}
????@Value("${postgis.port}")
????public?void?setDb_port(String?db_port) {
????????MapConstant.db_port = db_port;
????}
????@Value("${postgis.dbtype}")
????public?void?setDb_type(String?db_type) {
????????MapConstant.db_type = db_type;
????}
????@Value("${postgis.user}")
????public?void?setDb_user(String?db_user) {
????????MapConstant.db_user = db_user;
????}
????@Value("${postgis.passwd}")
????public?void?setDb_password(String?db_password) {
????????MapConstant.db_password = db_password;
????}
????@Value("${server.geoserver-path}")
????public?void?setGeoServerPath(String?geoServerPath) {
????????GEO_SERVER_PATH = geoServerPath;
????}
????//否
????public?static?final int DISABLE = 0;
????//是
????public?static?final int ENABLE = 1;
????public?static?final String?ESPG4326="latLonBoundingBox";
????public?static?final String?ESPG21481="nativeBoundingBox";
????//Geoserver服務相關參數
????public?static?final String?RESTURLKey="gsmgr_resturl";
????public?static?final String?RESTUSERKey="gsmgr_restuser";
????public?static?final String?RESTUSERValue="admin";
????public?static?final String?RESTPWKey="gsmgr_restpw";
????public?static?final String?RESTPWValue="geoserver";
????public?static?final String?GS_VERSIONKey="gsmgr_version";
????public?static?final String?GS_VERSIONValue="2.15.1";
}
該方式是重寫屬性set方法,將從配置文件取到的內容賦值給靜態屬性
第二種,修改MapConstant 類
@Configuration@Data
public?class?MapConstant {
????@Value("${server.geoserver-url}")
????public??String??geoserverUrl ;
????@Value("${server.geoserver-user}")
????public??String??geoserverUsername;
????@Value("${server.geoserver-password}")
????public???String?geoserverPassword;
????@Value("${server.geoserver-path}")
????public???String?geoserverPath;
????@Value("${postgis.database}")
????public???String?db ;
????@Value("${postgis.host}")
????public???String?db_host_before;
????@Value("${postgis.port}")
????public???String?db_port_before;
????@Value("${postgis.dbtype}")
????public???String?db_type_before ;
????@Value("${postgis.user}")
????public???String?db_user_before;
????@Value("${postgis.schema}")
????public???String?db_schema_before;
????@Value("${postgis.passwd}")
????public???String?db_password_before;
????//需要配置的項
????public?static??String?BUNDLE_URL ;
????public?static??String?USERNAME;
????public?static??String?PASSWD;
????public?static??String?database ;
????public?static??String?db_host;
????public?static??String?db_port;
????public?static??String?db_type ;
????public?static??String?db_user;
????public?static??String?db_schema;
????public?static??String?db_password;
????public?static??String?GEO_SERVER_PATH;
????@PostConstruct
????public?void?init() {
????????BUNDLE_URL=geoserverUrl;
????????USERNAME=geoserverUsername;
????????PASSWD=geoserverPassword;
????????GEO_SERVER_PATH=geoserverPath;
????????database=db;
????????db_host=db_host_before;
????????db_port=db_port_before;
????????db_type=db_type_before;
????????db_user=db_user_before;
????????db_schema=db_schema_before;
????????db_password=db_password_before;
????}
????//否
????public?static?final int DISABLE = 0;
????//是
????public?static?final int ENABLE = 1;
????public?static?final String?ESPG4326="latLonBoundingBox";
????public?static?final String?ESPG21481="nativeBoundingBox";
????//Geoserver服務相關參數
????public?static?final String?RESTURLKey="gsmgr_resturl";
????public?static?final String?RESTUSERKey="gsmgr_restuser";
????public?static?final String?RESTUSERValue="admin";
????public?static?final String?RESTPWKey="gsmgr_restpw";
????public?static?final String?RESTPWValue="geoserver";
????public?static?final String?GS_VERSIONKey="gsmgr_version";
????public?static?final String?GS_VERSIONValue="2.15.1";
}
該方式是對每一個靜態變量定義一個對應的普通變量,普通變量可以從配置文件獲取信息,然后通過@PostConstruct注解方法賦值
測試代碼
@Test????public void readConfigProperties() {
????????System.out.println(MapConstant.BUNDLE_URL);
????????System.out.println(MapConstant.USERNAME);
????????System.out.println(MapConstant.PASSWD);
????????System.out.println(MapConstant.database);
????????System.out.println(MapConstant.db_host);
????????System.out.println(MapConstant.db_port);
????????System.out.println(MapConstant.db_type);
????????System.out.println(MapConstant.db_user);
????????System.out.println(MapConstant.db_password);
????????System.out.println(MapConstant.GEO_SERVER_PATH);
????}
成功讀取結果
對此成功優化了這段代碼,后期會詳細介紹有關 @Value注解,有什么問題歡迎指見,感覺有幫距點個贊收藏下
————————————————
版權聲明:本文為CSDN博主「碼農咖」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:
https://blog.csdn.net/qq_45934356/article/details/107234186
程序員值得收藏的精選11套后臺登錄頁面和管理頁面模版
50份優秀Java求職者簡歷
SpringCloud前后端分離實戰項目視頻教程分享
2020年全網最全BAT筆試面試題打包分享
感謝點贊支持下哈?
總結
以上是生活随笔為你收集整理的@value 静态变量_springboot项目使用静态变量通过@Value注解获取配置文件内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux下改变python的版本
- 下一篇: linux下miniconda3启动命令