您的位置:首页 > 娱乐 > 八卦 > 大连外协机械加工网_杭州建设市场监管平台_今日重要新闻_天津百度优化

大连外协机械加工网_杭州建设市场监管平台_今日重要新闻_天津百度优化

2024/12/25 23:34:44 来源:https://blog.csdn.net/weixin_44060488/article/details/143571349  浏览:    关键词:大连外协机械加工网_杭州建设市场监管平台_今日重要新闻_天津百度优化
大连外协机械加工网_杭州建设市场监管平台_今日重要新闻_天津百度优化

如果应用程序在开发/测试环境和生产环境中需要使用不同的 url 地址,Spring提供了几种方法来处理不同环境下的配置。以下是几种常见的解决方案:

  1. 使用 @Value 和 application.properties 或 application.yml 配置文件

可以在不同的配置文件中为不同的环境配置不同的 url 地址,然后在 Spring 中通过 @Value 注入。
配置文件:

application.properties 或 application.yml 文件根据不同环境配置不同的 URL。

假设有两个环境:开发环境和生产环境。
a. 在 application.properties 中:

application-dev.properties(测试环境):

api.url=http://10.12.33.45:8000/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/

application-prod.properties(生产环境):

api.url=https://er.chehedf.com/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/

b. 在主配置文件中选择加载的环境:

可以使用 Spring Profiles 来指定不同的配置文件,在 application.properties 中添加如下配置:

spring.profiles.active=dev   # 或者 prod

通过设置 spring.profiles.active,Spring会加载不同环境下的配置文件,如 application-dev.properties 或 application-prod.properties。
c. 在代码中使用 @Value 注解注入配置:

@Value("${api.url}")
private String url;

这样,Spring会根据当前激活的环境配置(dev 或 prod)自动加载对应的 URL 地址。
d. 使用 application.yml 的例子:

spring:profiles:active: dev   # 或者 prod
---
spring:profiles: dev
api:url: http://10.12.33.45:8000/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/
---
spring:profiles: prod
api:url: https://er.chehedf.com/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/
  1. 通过 @Profile 注解选择配置类

也可以使用 @Profile 注解创建专门的配置类来注入不同的值,针对不同环境加载不同的配置类。

@Configuration
@Profile("dev")
public class DevConfig {@Value("http://10.12.33.45:8000/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/")private String url;public String getUrl() {return url;}
}@Configuration
@Profile("prod")
public class ProdConfig {@Value("https://er.chehedf.com/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/")private String url;public String getUrl() {return url;}
}

在这种方式下,可以通过设置 spring.profiles.active=dev 或 spring.profiles.active=prod 来选择不同的配置类,从而注入不同的 URL。
3. 使用 @ConfigurationProperties 配置绑定

如果 URL 配置越来越复杂,可以使用 @ConfigurationProperties 来绑定配置。
a. 配置 application.properties 文件:

api.url.dev=http://10.12.33.45:8000/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/
api.url.prod=https://er.chehedf.com/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/

b. 创建配置类:

@Component
@ConfigurationProperties(prefix = "api")
public class ApiConfig {private Map<String, String> url;public String getUrl(String profile) {return url.get(profile);}// getter and setter
}

然后在代码中,可以根据当前环境动态获取对应的 URL:

@Autowired
private ApiConfig apiConfig;private String url;public void init() {String profile = "dev"; // 或者通过 Spring 环境获取当前激活的 profilethis.url = apiConfig.getUrl(profile);
}
  1. 在 @Value 中使用 Spring Expression Language (SpEL)

如果需要根据不同的环境值来选择 URL,也可以使用 SpEL 来选择配置。

@Value("#{('${spring.profiles.active}' == 'dev' ? 'http://10.12.33.45:8000/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/' : 'https://er.chehedf.com/PSIGW/RESTListeningConnector/PSFT_HR/LX_GET_DISCIP_DATA.v1/')}")
private String url;

这种方法通过 SpEL 表达式来动态根据 spring.profiles.active 的值选择对应的 URL。
总结

推荐做法:使用 application.properties 或 application.yml 配置文件配合 @Value 注解和 Spring Profiles 来管理不同环境下的配置。
如果配置比较复杂,可以考虑使用 @ConfigurationProperties 来统一管理配置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com