SpringBoot-08:SpringBoot采用json的方式实现前后台通用的配置文件

简介: ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------     一。需求:   本篇博客是最近笔者做的一个项目,已经上线但是还在不断开发,有些页面上的配置,测试服务器和正式服务器的参数不同,需要经常改动,所以直接改页面肯定不合适!   so;产品经理提出一个需求,需要只建一个配置文件,存储正式服务器和测试服务器的配置,要求前后台通用,读取方便,修改方便 二。


------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

 

 

一。需求

  本篇博客是最近笔者做的一个项目,已经上线但是还在不断开发,有些页面上的配置,测试服务器和正式服务器的参数不同,需要经常改动,所以直接改页面肯定不合适!

  so;产品经理提出一个需求,需要只建一个配置文件存储正式服务器和测试服务器的配置要求前后台通用读取方便修改方便

二。结构

  采用.json文件实现前后台通用读取

三。知识点

  前后台不同的.json静态文件读取,解析方式

  编写能让springboot识别到自定义静态资源的路径插件

四。优点

  比.js.properties文件,以及多次请求后台的静态.class文件要优良一些,无论从性能还是被浏览器缓存Gank的因素来讲,这个.json的方式确实优良

五。方案思路以及最后解决

  1.项目结构

    

  2.创建.json文件---->TheServerURL.json

    注意:里面的格式为json

    

 

  { "appId": "123456", "secret": "123456789123", "url61": "http://192.168.1.1", "urlhead": "baidu.com", "urlinit": "www.hao123.com", "urlman": "mi.com", "justChangeThisURL":"https://www.cnblogs.com/DawnCHENXI/" }

 

  3.给springboot注册插件ApplicationConfig,让他识别到放置于resource下的静态资源(.json放在此处是因为修改方便,打成war包之后,它很好找)

 

复制代码
package com.xy.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

//这个注解需要启动类去设置一下,否者不会识别
@Configuration
public class ApplicationConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /**
         * 如果我们将/xxxx/** 修改为 /** 与默认的相同时,则会覆盖系统的配置,可以多次使用 addResourceLocations 添加目录,
         * 优先级先添加的高于后添加的。
         *
         * 如果是/xxxx/** 引用静态资源 加不加/xxxx/ 均可,因为系统默认配置(/**)也会作用
         * 如果是/** 会覆盖默认配置,应用addResourceLocations添加所有会用到的静态资源地址,系统默认不会再起作用
         */
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/META-INF/resources/")
                .addResourceLocations("classpath:/resources/")
                .addResourceLocations("classpath:/static/")
                .addResourceLocations("classpath:/public/")
                .addResourceLocations("classpath:/");
        registry.addResourceHandler("classpath:/mybatis/**");
        super.addResourceHandlers(registry);
    }
}
复制代码

 

  4.前台页面的使用方式(需要jquery支持)

    

 

 

  function test() { var dataroot="/TheServerURL.json";//json文件路径 var urlTemp; var appid; $.getJSON(dataroot, function(data) { urlTemp = "http://"+data.justChangeThisURL+"/teacher100/skip/login" appid=data.appId var path = "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+appid+"&redirect_uri=" + urlTemp + "&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect"; window.location.href = path; }); }

 

  5.后端构建个工具类,用来承载前端传回来的值(TheServerURL )

 

复制代码
package com.xy.model;

public class TheServerURL {
    //测试服务器
    
    public static String urlhead="";
    public static String urlinit="";
    public static String urlman="";

    public static String appId="";
    public static String secret="";
    
    public static String url61 = "";

    public static  String justChangeThisURL="";         
    



    public static String getJustChangeThisURL() {
        return justChangeThisURL;
    }

    public static void setJustChangeThisURL(String justChangeThisURL) {
        TheServerURL.justChangeThisURL = justChangeThisURL;
    }

    public static String getUrlhead() {
        return urlhead;
    }

    public static void setUrlhead(String urlhead) {
        TheServerURL.urlhead = urlhead;
    }

    public static String getUrlinit() {
        return urlinit;
    }

    public static void setUrlinit(String urlinit) {
        TheServerURL.urlinit = urlinit;
    }

    public static String getUrlman() {
        return urlman;
    }

    public static void setUrlman(String urlman) {
        TheServerURL.urlman = urlman;
    }

    public static String getAppId() {
        return appId;
    }

    public static void setAppId(String appId) {
        TheServerURL.appId = appId;
    }

    public static String getSecret() {
        return secret;
    }

    public static void setSecret(String secret) {
        TheServerURL.secret = secret;
    }

    public static String getUrl61() {
        return url61;
    }

    public static void setUrl61(String url61) {
        TheServerURL.url61 = url61;
    }



}
复制代码

 

  6.注册插件,在启动项目的时候读取配置(这个可以之后再去拓展,或者再写接口,实时刷新)

 

复制代码
package com.xy.config;

import com.alibaba.fastjson.JSON;
import com.xy.model.TheServerURL;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;

import java.io.*;
import java.util.HashMap;

@Configuration
public class TheURLLoadBean {
    public TheURLLoadBean(){
        try {
            //读取到静态资源文件
            org.springframework.core.io.Resource resource = new ClassPathResource("TheServerURL.json");
            File file = null;
            file = resource.getFile();
            //使用io读出数据
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
            String str = null;
            StringBuilder all=new StringBuilder();
            while((str = br.readLine()) != null){
                all.append(str);
            }
            if(all!=null){
                //采用阿里的fastjson解析这个json
                HashMap hashMap=JSON.parseObject(all.toString(),HashMap.class);
                //装配给这个工具类的静态字段
                TheServerURL.urlhead=(String) hashMap.get("urlhead");
                TheServerURL.urlinit=(String) hashMap.get("urlinit");
                TheServerURL.urlman=(String) hashMap.get("urlman");
                TheServerURL.appId=(String) hashMap.get("appId");
                TheServerURL.secret=(String) hashMap.get("secret");
                TheServerURL.url61=(String) hashMap.get("url61");
                TheServerURL.justChangeThisURL=(String) hashMap.get("justChangeThisURL");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
复制代码

 

  7.后端使用配置文件的参数直接用这个    工具类类名 . 静态字段名     )就可以调用到

 

TheServerURL.appId

 

 

笔者:晨曦Dawn

转载请注明出处!

如果有错误或疑惑,请您指出,互相探讨互相学习,感激不尽!!!!!!!!!!!!

目录
相关文章
|
3月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的足球青训俱乐部管理后台系统附带文章和源代码
基于SpringBoot+Vue的足球青训俱乐部管理后台系统附带文章和源代码
33 1
|
5天前
|
前端开发 JavaScript Java
解决springboot+vue+mybatis中,将后台数据分页显示在前台,并且根据页码自动跳转对应页码信息
该博客文章讲述了如何在Spring Boot + Vue + MyBatis的项目中实现后台数据的分页查询,并在前端进行显示和页码跳转,包括后端的分页查询实现、前端与后端的交互以及使用Element UI进行分页展示的方法。
|
21天前
|
JSON Java fastjson
Spring Boot返回Json数据及数据封装
本文详细介绍了如何在Spring Boot项目中处理JSON数据的传输 Spring Boot默认使用Jackson作为JSON处理器,并通过`spring-boot-starter-web`依赖自动包含相关组件。文章还展示了如何配置Jackson处理null值,使其转换为空字符串。此外,文章比较了Jackson和FastJson的特点,并提供了FastJson的配置示例,展示了如何处理null值以适应不同应用场景。
|
1月前
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
547 2
|
1月前
|
测试技术 数据库 数据安全/隐私保护
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)(2)
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)
20 0
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)(2)
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js的附带文章和医院后台管理系统源代码设计说明文档ppt
基于springboot+vue.js的附带文章和医院后台管理系统源代码设计说明文档ppt
27 1
基于springboot+vue.js的附带文章和医院后台管理系统源代码设计说明文档ppt
|
1月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的前后台图书商城系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的前后台图书商城系统附带文章源码部署视频讲解等
14 0
|
1月前
|
Java 关系型数据库 MySQL
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)(1)
基于SpringBoot+Vue足球青训俱乐部管理后台系统开发(源码+部署说明+演示视频+源码介绍)
24 0
|
2月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的游戏后台系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的游戏后台系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
2月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue的悦己美容院后台管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue的悦己美容院后台管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
27 0