SpringBoot 发布webservice接口,实现接口如何调用业务层代码

2023-10-30

如果直接按照业务层方式,在webservice实现是不可行的,@Autowired无法自动注入,还会报空指针的错误,因为在webservice的自动注入不是在spring容器中找bean对象,所以按照service层方式是无法取得对象,所以我找到一篇文章,里面教我如何手动给webservice注入我们所需要的对象,例如我们想调用service层的方法,那就把service层的接口找出来,并手动注入,放在webservice的实现类,然后再调用方法。
手动调用工具类如下:

package com.xgs.hisystem.util;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * Spring容器工具类
 * @author lv
 *
 */
@Component("springContextUtils")
public class SpringContextUtils implements ApplicationContextAware {
	/**
	 * Spring应用上下文环境
	 */
	private static ApplicationContext applicationContext;

	/**
	 * 实现ApplicationContextAware接口的回调方法,设置上下文环境
	 *
	 * @param applicationContext
	 */
	public void setApplicationContext(ApplicationContext applicationContext) {
		SpringContextUtils.applicationContext = applicationContext;
	}

	/**
	 * @return ApplicationContext
	 */
	public static ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	/**
	 * 获取对象
	 *
	 * @param name
	 * @return Object
	 * @throws BeansException
	 */
	public static Object getBean(String name) throws BeansException {
		return applicationContext.getBean(name);
	}

	/**
	 * 根据class获取对应的bean对象
	 * @param clz
	 * @return
	 */
	public static Object getBean(Class<?> clz){
		return applicationContext.getBean(clz);
	}
}



在我的项目中,是这样调用的

在这里插入图片描述

@WebService(endpointInterface = "com.xgs.hisystem.webservice.TripartWebService",targetNamespace = "http://webservice.hisystem.xgs.com/")
public class TripartWebServiceImpl implements TripartWebService {

    IRegisterService iRegisterService=(IRegisterService) SpringContextUtils.getBean(IRegisterService.class);

    private UserEntity userEntity=new UserEntity();
    @Override
    public String queryDoctor() {
        return iRegisterService.queryDoctor();
    }
}

这样调用的话,里面的service层的接口就不会为空,能通过调用方法来访问数据库之类的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot 发布webservice接口,实现接口如何调用业务层代码 的相关文章

  • pyautogui.locateOnScreen()扫描屏幕返回none问题

    我们有一张这样的图片 我们想用pyautgui模块的locateOnScreen 定位该图片在屏幕对应的位置 发现屏幕中明明存在改图片 但是扫描失败 找不到该图片 如下两张图 我们给locateOnScreen 括号里添加confidenc
  • Linux——主函数的三个参数,printf方法的隐藏缓冲区

    主函数的三个参数 在windows下 c语言的主函数默认有两个参数 很多人会惊奇 这是什么 好像从没有听说过 我们在写C代码的时候都是习惯性的新建空项目然后自己添加 cpp文件 但是可能有部分人习惯直接新建控制台程序 然后可能就会看到这么一
  • 对你的屁股好一点!

    作为软件开发人员 买一把上乘的电脑椅也许是你能做的最明智的投资之一 事实上 在过去几年看过各种各样的椅子之后 我得出了一个结论 如果你想买一把上乘的椅子 你要花的钱不会少于500美元 如果你在座椅上花的钱没那么多 除非你正在经历那场跨世纪互
  • 技术博客写作「个人经验分享」

    技术博客写作 个人经验分享 仔细想来 从19年我刚开始试着技术写作算起 已经过去了好几年时间 刚好趁着这次的 赠送奖牌活动 奖牌很好看 我很想要hhh 来分享一下我关于技术博客写作的一些个人经验 文章目录 技术博客写作 个人经验分享 Wha

随机推荐

  • 新装机电脑网速特别慢

    老主机最近有些问题 我一直没能解决 也用了5年了 索性出给闲鱼二道贩子 又自己新配置了一台主机 具体表现为 主机插网线后 跟之前主机比 浏览网页或者下载资源速度特别慢 打开百度浏览器都要转上一会 不管下载什么资源 下载速度最快只有100 2
  • Redis面试题整理

    1 什么是Redis以及Redis的优缺点 Redis是一个非关系型数据库 NO SQL 类似于Java中Map 其中key为字符串类型 Redis支持的Value类型有5种 字符串 String 列表 List 集合 set 散列表 Ha
  • 【Python技巧】python字符串编码全是Unicode,Unicode压缩到utf-8,encode和decode,bytes

    一 Python3字符串全是Unicode 这意味着 只要用python3 x 无论我们的程序以那种语言开发 都可以在全球各国电脑上正常显示 python3 x中 把字符串变成了unicode 文件默认编码为utf 8 unicode 分为
  • Acwing 893. 集合-Nim游戏

    Mex运算 设S表示一个非负整数集合 定义mex S 为求出不属于集合S的最小非负整数的运算 即 mex S min x x属于自然数 且x不属于S SG函数 在有向图游戏中 对于每个节点x 设从x出发共有k条有向边 分别到达节点y1 y2
  • Linux文件恢复

    0 前言 用rm命令多了 难免会出现误删文件的情况 本人就在Ubuntu14 04中做项目时遇到该问题 本来想使用rm命令删除以14开头的文件 结果写成如下形式 导致文件被误删 rm 14 14 和 误增了一个空格 1 工具 ext3和ex
  • C语言程序设计基础OJ练习题(实验六一维数组)

    一 C语言实验 最值 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description 有一个长度为n的整数序列 其中最大值和最小值不会出现在序列的
  • 网站接入CDN显示不正常无法加载HTTPS样式表

    网站接入腾讯云内容分发网络CDN后 显示不正常 网站加载的CSS样式表HTTP协议 无法加载HTTPS 如何解决 解决方法 修改回源协议为HTTPS即可 腾讯云CDN网站HTTPS样式表无法载入的解决方法 网站接入腾讯云CDN后 网站显示不
  • IOCTL命令号

    IOXX是驱动IOCTL命令号的宏转换定义 用于对命令进行分类 防止不同类驱动程序具有相同命令号 导至误打开驱动程序而驱动程序功能调用被误操作 命令码的组织是有一些讲究的 因为我们一定要做到命令和设备是一一对应的 这样才不会将正确的命令发给
  • 记一次生产环境tomcat线程数打满情况分析

    前言 旨在分享工作中遇到的各种问题及解决思路与方案 与大家一起学习 学无止境 加油 Just do it 问题描述 运行环境描述 tomcat 8 5 单节点 该应用集群20个节点 avg tps 250 max tps 350 tomca
  • HDFS客户端写流程

    HDFS客户端写流程 1 创建文件 首先调用DistributedFileSystem creat 创建一个空的HDFS文件 然后这个方法在底层会通过调用ClientProtocol create 方法通知Namenode执行对应的操作 N
  • Flutter开发之——单组件布局容器-FittedBox

    一 概述 当子组件的宽高比和父组件的宽高比不一样时 我们等比拉伸或者填充父组件 这时我们可以使用FittedBox 二 FittedBox 2 1 构造方法 const FittedBox Key key this fit BoxFit c
  • 区块链学习——区块链的技术栈

    摘要 我在区块链学习的上一篇博文 链接 区块链学习 区块链技术理念与工作流程中 简单介绍了区块链的技术理念以及工作流程 本文我将继续介绍区块链技术栈 我们知道 区块链本身只是一个数据的记录格式 就像们平时使用Excel表格 Word文档一样
  • Java #{}和${}区别

    Java 和 区别 Mybatis中使用 可以防止sql注入 表示一个占位符号 实现向PreparedStatement占位符中设置值 表示一个占位符 自动进行Java类型到JDBC类型的转换 因此 可以有效防止SQL注入 可以接收简单类型
  • 过程改进的关注点之项目管理过程

    从项目估算到项目策划 再到计划跟踪控制 包括风险的识别与管理 常见的改进点有哪些呢 基于我的咨询经验梳理如下 小类 关注点 估算方法 无论是采用经验法还是模型法 都要根据历史的估算偏差率评价估算方法的合理性 如果偏差率大 则应该识别改进点
  • MySQL高级篇_第09章_性能分析工具的使用

    1 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候 该如何思考呢 这里把思考的流程整理成下面这张图 整个流程划分成了 观察 Show status 和 行动 Action 两个部分 字母 S 的部分代表观察 会使用相应的分析工具 字
  • WSL2 引起的 VirtualBox 启动问题

    罪魁祸首 https docs microsoft com zh cn windows wsl wsl2 install 尝试启用 WSL2 执行了 Enable WindowsOptionalFeature Online FeatureN
  • 9、数据类型

    1 布尔型布尔型的值只可以是常量 true 或者 false 初始化默认false 一个简单的例子 var b bool true 2 数字类型整型 int 和浮点型 float32 float64 Go 语言支持整型和浮点型数字 并且支持
  • 正则化- logistics回归

    正则化是一种常见的机器学习技术 它是在模型训练过程中为了防止过拟合而引入的一种约束方法 它通过在模型的损失函数中增加正则项来实现 正则项通常是模型参数的范数 L1 或 L2 范数 通过限制参数的大小来使得模型更加简单 从而减少过拟合的风险
  • pyinstaller 打包流程大体说明(linux)

    一 在文件中配置好 spec build sh start sh stop sh 文件后 后面的打包过程就很简单了 1 其中 spec文件是打包的流程 与pyinstaller有关 可以参考pyinstaller的spec文件编写规范 它能
  • SpringBoot 发布webservice接口,实现接口如何调用业务层代码

    如果直接按照业务层方式 在webservice实现是不可行的 Autowired无法自动注入 还会报空指针的错误 因为在webservice的自动注入不是在spring容器中找bean对象 所以按照service层方式是无法取得对象 所以我