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

转载请注明出处!

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

目录
相关文章
|
2月前
|
SQL 监控 druid
springboot-druid数据源的配置方式及配置后台监控-自定义和导入stater(推荐-简单方便使用)两种方式配置druid数据源
这篇文章介绍了如何在Spring Boot项目中配置和监控Druid数据源,包括自定义配置和使用Spring Boot Starter两种方法。
|
12天前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
27 1
|
25天前
|
开发框架 前端开发 网络协议
Spring Boot结合Netty和WebSocket,实现后台向前端实时推送信息
【10月更文挑战第18天】 在现代互联网应用中,实时通信变得越来越重要。WebSocket作为一种在单个TCP连接上进行全双工通信的协议,为客户端和服务器之间的实时数据传输提供了一种高效的解决方案。Netty作为一个高性能、事件驱动的NIO框架,它基于Java NIO实现了异步和事件驱动的网络应用程序。Spring Boot是一个基于Spring框架的微服务开发框架,它提供了许多开箱即用的功能和简化配置的机制。本文将详细介绍如何使用Spring Boot集成Netty和WebSocket,实现后台向前端推送信息的功能。
250 1
|
3月前
|
JavaScript 前端开发 编译器
10min代码快速熟悉Tsconfig.json配置文件
【8月更文挑战第16天】10min代码快速熟悉Tsconfig.json配置文件
92 2
|
15天前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
30 0
|
3月前
|
小程序 JavaScript Java
微信小程序+SpringBoot接入后台服务,接口数据来自后端
这篇文章介绍了如何将微信小程序与SpringBoot后端服务进行数据交互,包括后端接口的编写、小程序获取接口数据的方法,以及数据在小程序中的展示。同时,还涉及到了使用Vue搭建后台管理系统,方便数据的查看和管理。
微信小程序+SpringBoot接入后台服务,接口数据来自后端
|
3月前
|
JSON Java API
解码Spring Boot与JSON的完美融合:提升你的Web开发效率,实战技巧大公开!
【8月更文挑战第29天】Spring Boot作为Java开发的轻量级框架,通过`jackson`库提供了强大的JSON处理功能,简化了Web服务和数据交互的实现。本文通过代码示例介绍如何在Spring Boot中进行JSON序列化和反序列化操作,并展示了处理复杂JSON数据及创建RESTful API的方法,帮助开发者提高效率和应用性能。
154 0
|
3月前
|
JSON Java API
Jackson:SpringBoot中的JSON王者,优雅掌控数据之道
【8月更文挑战第29天】在Java的广阔生态中,SpringBoot以其“约定优于配置”的理念,极大地简化了企业级应用的开发流程。而在SpringBoot处理HTTP请求与响应的过程中,JSON数据的序列化和反序列化是不可或缺的一环。在众多JSON处理库中,Jackson凭借其高效、灵活和强大的特性,成为了SpringBoot中处理JSON数据的首选。今天,就让我们一起深入探讨Jackson如何在SpringBoot中优雅地控制JSON数据。
121 0
|
3月前
|
前端开发 JavaScript Java
解决springboot+vue+mybatis中,将后台数据分页显示在前台,并且根据页码自动跳转对应页码信息
该博客文章讲述了如何在Spring Boot + Vue + MyBatis的项目中实现后台数据的分页查询,并在前端进行显示和页码跳转,包括后端的分页查询实现、前端与后端的交互以及使用Element UI进行分页展示的方法。
|
4月前
|
SQL XML JavaScript
【若依Java】15分钟玩转若依二次开发,新手小白半小时实现前后端分离项目,springboot+vue3+Element Plus+vite实现Java项目和管理后台网站功能
摘要: 本文档详细介绍了如何使用若依框架快速搭建一个基于SpringBoot和Vue3的前后端分离的Java管理后台。教程涵盖了技术点、准备工作、启动项目、自动生成代码、数据库配置、菜单管理、代码下载和导入、自定义主题样式、代码生成、启动Vue3项目、修改代码、以及对代码进行自定义和扩展,例如单表和主子表的代码生成、树形表的实现、商品列表和分类列表的改造等。整个过程详细地指导了如何从下载项目到配置数据库,再到生成Java和Vue3代码,最后实现前后端的运行和功能定制。此外,还提供了关于软件安装、环境变量配置和代码自动生成的注意事项。
2584 3