当前位置: 首页 > 知识库问答 >
问题:

java - springboot中这种类注解标签里的字段wsdlLocation如何改成变量呀,我想测试环境跟生产环境用不同的地址?

施晗昱
2023-04-27
@WebServiceClient(name = "PublishService", targetNamespace = "http://tempuri.org/", wsdlLocation = "https://aquavn-tt78admindemo.vnpt-invoice.com.vn/PublishService.asmx?wsdl")
public class PublishService
    extends Service
{

共有2个答案

劳豪
2023-04-27

首先写一个能读取配置文件的类加上@Component作为一个bean,方便我们拿配置文件的值

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @author Undest
 * @date 2023-04-18 15:03
 * 容器配置类 用于获得配置文件中的变量值
 */
@Component("contextConfig")
public class ContextConfig {

    @Value("${wsdlLocation}")
    public String wsdlLocation;

}

然后在你的配置文件里写上:
yml:

green_enterprise_server_ws_url: https://aquavn-tt78admindemo.vnpt-invoice.com.vn/PublishService.asmx?wsdl

或者properties:

green_enterprise_server_ws_url=https://aquavn-tt78admindemo.vnpt-invoice.com.vn/PublishService.asmx?wsdl

这样你就会发现,在需要用到这个配置变量的地方注入这个配置类的对象就可以使用了:

@Resource(name = "contextConfig")
ContextConfig contextConfig;

或者在一个非Spring管理的类里:

ContextConfig contextConfig = SpringUtils.getBean("contextConfig");//这里的工具类参照我之前的回答提供的

然后请你查看这篇文章:
[https://blog.csdn.net/qq_35443054/article/details/109155970]
核心的代码:

URL wsdlLocation = new URL("http://example.org/my.wsdl");
QName serviceName = new QName("http://example.org/sample", "MyService");
Service service = Service.create(wsdlLocation, serviceName);

就是把通过写注解的方式改成用代码显式传入参数的方式来创建。
我们只需要把负责配置的bean里public的变量这样使用就可以了:

URL wsdlLocation = new URL(contextConfig.wsdlLocation);
乐正浩宕
2023-04-27

试试 wsdlLocation = "${配置项}"

 类似资料:
  • 本文向大家介绍SpringBoot生产环境和测试环境配置分离的教程详解,包括了SpringBoot生产环境和测试环境配置分离的教程详解的使用技巧和注意事项,需要的朋友参考一下 第一步:项目中资源配置文件夹(resources文件夹)下先新增测试环境application-dev.yml和application-prod.yml两个配置文件,分别代表测试环境配置和生产环境配置 第二步:在applic

  • 在SpringBoot中读取环境变量的最佳方法是什么? 在Java中,我使用了以下方法: 是否可以使用注释来实现?

  • 如果你使用了 vux2 模板或者 webpack 模板,默认你可以直接通过判断 process.env.NODE_ENV 来区分 比如统计代码仅放在 production 环境,在不同环境里使用不同的 API 接口地址。 if (process.env.NODE_ENV === 'production') { // 干一些线上才要做的事情 } if (process.env.NODE_ENV

  • 问题内容: 我正在尝试为ProcessBuilder对象添加环境变量,但是当我在ProcessBuilder中调用该新变量时,出现错误。这就是我建立流程的方式 我得到了错误 我不明白,如果我只是为此过程设置变量,为什么会出现错误。请帮助我如何设置env变量,以便可以在ProcessBuilder中使用它。 问题答案: Alfredo O的示例为您提供了正确的想法。您需要告诉ProcessBuild

  • 生产中的EAP EAP在默认的FreeRADIUS安装中开箱即用。但是,也有一些要点需要注意或更改以适应您的环境。在本节中,我们将介绍以下几点: 适当的公钥基础设施(PKI)的重要性 配置内部隧道虚拟服务器 内部和外部隧道识别的问题 禁用未使用的EAP方法 公共密钥基础设施简介公钥基础结构主要用于两件事: 验证某人的身份 通过不安全的连接交换安全数据 为了确保某人是他们声称的人,我们使用证书颁发机

  • 本文向大家介绍SpringBoot+docker环境变量配置详解,包括了SpringBoot+docker环境变量配置详解的使用技巧和注意事项,需要的朋友参考一下 项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结: 1.开发环境ide中启动项目 可以通过ide的环境变量参数配置,启动之后使用哪个配置,比如 这样就使用application-test.yml中的