Spring项目启动加载xml配置文件替换数据库提高响应速度

文章目录

          • 1. pom依赖
          • 2. xml配置文件
          • 3. 获取参数工具类
          • 4. 根据beanId从SpringBootIOC获取类实例工具类
          • 5. 测试类
          • 6. 浏览器+控制台验证

1. pom依赖
   <properties><!--全局版本控制--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring.version>4.3.10.RELEASE</spring.version><lombok.version>1.18.8</lombok.version></properties><!-- Spring MVC support Start--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version><scope>provided</scope></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.2.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- Spring MVC support End-->
2. xml配置文件

applicationContext-wscontainer.xml
web.xml中记得写上,通配符*.xml可跳过
这里面constructor-arg标签就是参数,根据需要定义需要的参数即可

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--纽约交易所接口 保单查询 --><bean id="beanId" class="com.gblfy.order.utils.WSContainer" scope="singleton"><constructor-arg value="http://192.168.0.27:8080/services/webservice?wsdl"/><constructor-arg value="NamespaceURI"/><constructor-arg value="Method"/><constructor-arg value="QUEUE_NAME"/><constructor-arg value="QUEUE_TYPE"/><constructor-arg value="QUEUE_DESC"/></bean>
</beans>
3. 获取参数工具类
package com.gblfy.order.utils;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class WSContainer {private String url;//请求地址private String namespaceURI;//方法的命名空间private String method;//调用的方法private String queueName; //队列名称private String queueType;//队列类型private String queueDesc;//队列描述
}
4. 根据beanId从SpringBootIOC获取类实例工具类

SpringContextUtils

package com.gblfy.order.utils;import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;/*** @author gblfy 2020-04-29* @apiNote spring上下文工具类,用于普通类调用springIOC中的对象*/
@Component
public class SpringContextUtils implements ApplicationContextAware {private static ApplicationContext applicationContext = null;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {if (SpringContextUtils.applicationContext == null) {SpringContextUtils.applicationContext = applicationContext;}}/*** @apiNote 获取applicationContext*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** @apiNote 通过name获取 Bean.*/public static Object getBean(String beanId) {return getApplicationContext().getBean(beanId);}/*** @apiNote 通过class获取Bean.*/public static <T> T getBean(Class<T> clazz) {return getApplicationContext().getBean(clazz);}/*** @apiNote 通过name, 以及Clazz返回指定的Bean*/public static <T> T getBean(String name, Class<T> clazz) {return getApplicationContext().getBean(name, clazz);}
}
5. 测试类
package com.gblfy.order.controller;import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.gblfy.order.confirm.ConfirmCallBackListener;
import com.gblfy.order.utils.SpringContextUtils;
import com.gblfy.order.utils.WSContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;/*** 项目启动,将接口配置文件加载到spring的IOC容器中,* 通过接口的BeanId从配置文件中获取指定接口的信息配置参数*/
@Controller
public class WSContainerController {//日志输出private final static Logger log = LoggerFactory.getLogger(ConfirmCallBackListener.class);//引入json工具类private static final ObjectMapper MAPPER = new ObjectMapper();@RequestMapping("/getWSParams")@ResponseBodypublic String getWSParams() throws JsonProcessingException {//这个beanId 建议是接口名 能够标识区分是哪一支接口String serviceBeanId = "beanId";/*** 1.在xml文件中声明接口的beanId* 2.把需要的参数配置到xml文件中* 3.通过接口的beanId获取指定接口的配置信息*/WSContainer wsContainer = (WSContainer) SpringContextUtils.getBean(serviceBeanId);log.info("接收请求的Url   : {}", wsContainer.getUrl());log.info("接收请求的命名空间: {}", wsContainer.getNamespaceURI());log.info("接收请求的方法名称: {}", wsContainer.getMethod());log.info("接收请求的队列名称: {}", wsContainer.getQueueName());log.info("接收请求的队列类型: {}", wsContainer.getQueueType());log.info("接收请求的队列描述: {}", wsContainer.getQueueDesc());
//        Gson gson= new Gson();//把对象转换成 jsonStr 类型便与解析return MAPPER.writeValueAsString(wsContainer);}
}
6. 浏览器+控制台验证

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520268.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标检测算法图解:一文看懂RCNN系列算法

在生活中&#xff0c;经常会遇到这样的一种情况&#xff0c;上班要出门的时候&#xff0c;突然找不到一件东西了&#xff0c;比如钥匙、手机或者手表等。这个时候一般在房间翻一遍各个角落来寻找不见的物品&#xff0c;最后突然一拍大脑&#xff0c;想到在某一个地方&#xff0…

不懂数据库的码农不是好程序员!

毋庸置疑&#xff0c;现在是“一切皆数”的时代&#xff0c;放眼目前炙手可热的大数据、人工智能等创新技术&#xff0c;如果没有数据加以支撑&#xff0c;一切的一切将毫无用武之地&#xff0c;更不必谈信息化、智能化and so on&#xff0c;而数据库作为存储和承载数据的重要场…

mysql 日期和时间函数_介绍一下mysql的日期和时间函数

介绍一下mysql的日期和时间函数mysql> SELECT PERIOD_DIFF(9802,199703);-> 11DATE_ADD(date,INTERVAL expr type)DATE_SUB(date,INTERVAL expr type)ADDDATE(date,INTERVAL expr type)SUBDATE(date,INTERVAL expr type)这些函数执行日期的算术运算。ADDDATE() 和 SUBDAT…

基于深度学习模型WideDeep的推荐

本实验选用数据为UCI开源数据集&#xff0c;仅用于学习&#xff0c;请勿商用&#xff09; Wide&Deep推荐算法出自一篇论文《Wide&Deep Learning for RecommenderSystems》&#xff0c;Wide&Deep由两部分组成&#xff0c;分别是Wide和Deep。先来说wide&#xff0c;…

RabbitMQ非root用户安装(Linux环境)

文章目录一、用户操作1. 创建fismq用户并设置密码2. 给fismq用户设置目录权限二、Erlang 操作2.1. Erlang下载2.2. Erlang 上传并解压2.3. 验证rabbitmq依赖是否安装2.4. 安装rabbitmq依赖2.5. Erlang 编译、安装2.6. Erlang 配置环境变量2.7. Erlang 验证三、RabbitMQ3.1. Rab…

深度学习目标检测系列:faster RCNN实现|附python源码

目标检测一直是计算机视觉中比较热门的研究领域&#xff0c;有一些常用且成熟的算法得到业内公认水平&#xff0c;比如RCNN系列算法、SSD以及YOLO等。如果你是从事这一行业的话&#xff0c;你会使用哪种算法进行目标检测任务呢&#xff1f;在我寻求在最短的时间内构建最精确的模…

mysql冷热数据LRU_浅析MySQL的lru链表

一、简述传统的lru链表lru&#xff1a;least recently used相信大家对lru链表是不陌生的&#xff0c;它算是一种基础的数据结构吧&#xff0c;而且想必面试时也被问到过什么是lru链表&#xff0c;甚至是让你手写一个lru链表。想必你已经知道了mysql的buffer pool机制以及mysql组…

报应!GitHub上线围剿Python计划,已有4万人跟进,你呢?

人红是非多&#xff0c;最近Python就遇到了这样的问题。与国际技术社区上一片「形势大好」对比鲜明的是&#xff0c;国内技术圈却一直存在对Python&#xff0c;「力挺」和「吃瓜」两派阵营&#xff0c;针锋相对&#xff0c;最近就悄然上线一个争议性疑问&#xff1a;围剿Python…

生物智能与AI——关乎创造、关乎理解(上)

几百万年前&#xff0c;第一次人类智能的星火出现在非洲大陆&#xff0c;并且持续发展&#xff0c;最终在大约10万年前在智人的大脑中达到顶峰。作为现代人类&#xff0c;我们只能想象我们的古代祖先在窥视夜空时所经历的事情&#xff0c;以思考物理现实的本质&#xff0c;以及…

linux7基础——给用户添加sudo权限

文章目录1. 切换到超级用户2. 修改sudoers文件内容1. 切换到超级用户 命令&#xff1a;su 密码&#xff1a;******** 此处的密码是root用户的密码2. 修改sudoers文件内容 默认的sudoers文件不具有写权限 a) 给文件sudoers 增加write权限 命令&#xff1a; #chmod uw /etc/sud…

Spring Cloud Config 规范

Spring Cloud Config 规范 首先Spring Cloud 是基于 Spring 来扩展的&#xff0c;Spring 本身就提供当创建一个Bean时可从Environment 中将一些属性值通过Value的形式注入到业务代码中的能力。那Spring Cloud Config 要解决的问题就是&#xff1a; 如何将配置加载到 Environm…

RabbitMQ开机启动 Centos7环境

文章目录8.1. 创建启动脚本8.2. 赋予启动脚本可执行权限8.3. 加入开机启动并指定用户8.4. 赋予可执行权限8.5. 重启MQ服务器测试8.6. 查看MQ服务运行状态8.7. 浏览器验证MQ管控台8.1. 创建启动脚本 操作说明&#xff1a;使用fismq用户操作&#xff0c;使用root用户权限的地方我…

微信几亿人在线的点赞、取消点赞系统,用Redis如何实现?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | solocoder责编 | 阿秃点赞功能大家都不会陌生&#xff0c;像微信这样的社交产品中都有&#xff0c;但别看功能小&#xff0c;想要做好需要考虑的东西还挺多的&#xff0c;如海量数据的分布式存储、分布式缓存、多IDC的数据一…

java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法

byte数组转换成16进制字符串String&#xff1a;public class CommonUtil {/*** byte数组转换成16进制字符串* param src* return*/public static String bytesToHexString(byte[] src){StringBuilder stringBuilder new StringBuilder();if (src null || src.length < 0) …

年度大盘点:机器学习开源项目及框架

我们先来看看Mybridge AI 中排名靠前的顶级开源项目&#xff0c;再聊聊机器学习今年都有哪些发展&#xff0c;最后探寻下新的一年中会有哪些有值得我们期待的事情。 顶级的开源项目 BERT BERT&#xff0c;全称为Bidirectional Encoder Representations from Transformers&am…

centos7以普通用户开机启动某个服务或者指定脚本

文章目录1. 执行命令格式规范2. 添加到/etc/rc.d/rc.local3. 赋予可执行权限扩展知识&#xff1a;开头添加这句 source /etc/profile 原因为 下面几点1. 执行命令格式规范 #开机切换到fismq用户执行/app/start.sh su fismq -c "/app/rabbitmq_server-3.8.3/sbin/start_ra…

Andrew Ng教你如何引领公司进入AI时代

AI&#xff08;人工智能&#xff09;技术就像100年前的电力一样&#xff0c;正准备改变每个行业。从现在到2030年&#xff0c;它将创造约13万亿美元的GDP增长。虽然它已经在谷歌&#xff0c;阿里巴巴&#xff0c;微软等领先的科技公司中创造了巨大的价值&#xff0c;但其他许多…

IBM Cloud Paks:云端追光者也!

作者&#xff1a;阿秃 现如今&#xff0c;“企业上云”已毫无争议。 据知名云管理服务商RightScale 发布的2019年全球云计算市场调查显示&#xff0c;在众多云平台中混合云的采用率比重最高&#xff0c;达到了惊人的58%。可以想见&#xff0c;市场对混合云的庞大需求正吸引越…

java 装配_Spring 通过Java代码装配bean

1. 背景尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化扫描配置是更为推荐的方式&#xff0c;但在有些情况下自动化扫描的方案行不通&#xff0c;如想要将第三方库中的组件装配到自己的应用中。在这种情况下必须通过显示 装配的方式。显示装配有两种可选方案&#…

生物智能与AI——关乎创造、关乎理解(下)

无监督学习&#xff0c;迁移学习和工程设计 AI系统与人类学习之间的另一个主要差异在于AI系统所需的大量标记数据才可以达到人类级别的性能。例如&#xff0c;最近的语音识别系统在11940小时的语音训练后才能对齐转录。如果我们每天大声地听到另一个人类阅读文本两个小时&…