技术笔记:Profiles简介

简介: 技术笔记:Profiles简介

一、简介


在我们实际的开发中,有些配置文件在开发、测试或生产等不同环境中可能是不同的,例如数据库连接、redis等等相关的配置信息等。那我们如何在不同环境中自动实现配置的切换呢?


Spring给我们提供了 profiles 机制,下面看看在SpringBoot 中是如何使用 Profiles 功能的。


在 SpringBoot 中多环境配置文件名需要使用 //代码效果参考:http://www.lyjsj.net.cn/wz/art_23298.html

application-{profile}.properties 的格式,这里的 {profile} 对应的是你的环境标识。例如:

application-dev.properties — 这是开发环境


application-pro.properties — 这是生产环境


二、场景使用


1、配置文件的使用方法


在Resource目录下新建两个配置文件,分别命名为 application-dev.properties 以及 application-pro.yml,为了方便看到区别,我们分别在三个配置文件中分别指定tomcat启动端口:


application-dev.properties


server.port=9091


application-pro.yml


server:


port: 7091


application.properties


server.port=8001


#spring.profiles.active属性来设置


spring.profiles.active=pro


程序会默认加载 application.properties中的配置,我们想要使用对应的环境,


只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的 {profile},这里就是指dev、pro。


通过运行结果。我们可以看出,运行后的端口对应着 application-pro.yml 配置文件的 7091。


2、注解的用法//代码效果参考:http://www.lyjsj.net.cn/wz/art_23296.html


@Profile 注解


@Configuration


public class MyConfig {


/


相当于一个条件


如果application.properties 中active配置为 pro ,


则这个Bean交由Spring进行管理


/


@Bean


@Profile("pro")


public UsersBean getUser1(){


return new UsersBean();


}


/


相当于一个条件


如果application.properties 中active配置为 dev ,


则这个Bean交由Spring进行管理


/


@Bean


@Profile("dev")


public UsersBean getUser2(){


return new UsersBean();


}


/


没有加@Profile注解,则任何环境都会生效


则这个Bean交由Spring进行管理


/


@Bean


public UsersBean getUser3(){


return new UsersBean();


}


}


View Code


Spring获取Bean进行管理时,这个注解相当于一个条件,


如果 active 激活的是 pro,那么则获取上面那个Bean(getUser1方法)


如果 active 激活的是 dev,那么则获取中间那个Bean(getUser2方法)


注意:如果 application.properties 中没有配置 spring.profiles.active,则会取默认的Bean(getUser3方法),如果没有默认则没有符合条件的Bean。


3、命令行的方式


上面两种激活 profile 的方式,即在 application.properties 中指定属性 spring.profiles.active 的值和采用 @Profile 注解方式。


但是这种方式在实际项目中的使用并不合适,因为你每次提交代码还要手动修改 spring.profiles.active 的值。


所以我们还可以使用命令行的方式,SpringBoot 的程序一般是打成jar包,在使用 java -jar 命名执行jar包的时候,可以再后面加上:


--spring.profiles.active=dev;


我们的jar文件名为 spring-boot-Demo,那么我们我们启动项目的命令行为:


java -jar spring-boot-Demo-0.0.1.jar --spring.profiles.active=pro


采用命令行的方式,在 application.properties 配置文件中就不需要添加 spring.profiles.active 配置信息了,只需要在启动项目时加入后面的命令。


4、Idea的配置方式。


假如我们实际开发环境中是用Idea进行开发的话,还可以修改启动配置,进行程序启动类传参:


启动的时候传入参数:


--sping-profiles-active=dev


也可以使用虚拟机传参,这种方式和程序类启动传参类似。给虚拟机传入参数命令:


-Dspring.profiles.active=dev


这两种传参方式在开发中都可以实现激活 spring.profiles.active。


但是实际环境中不建议使用这种方式,因为服务器上不太可能有Idea这种工具。

相关文章
|
前端开发
webpack如何设置devServer启动项目为https协议
webpack如何设置devServer启动项目为https协议
1953 0
|
人工智能 Java Serverless
【MCP教程系列】搭建基于 Spring AI 的 SSE 模式 MCP 服务并自定义部署至阿里云百炼
本文详细介绍了如何基于Spring AI搭建支持SSE模式的MCP服务,并成功集成至阿里云百炼大模型平台。通过四个步骤实现从零到Agent的构建,包括项目创建、工具开发、服务测试与部署。文章还提供了具体代码示例和操作截图,帮助读者快速上手。最终,将自定义SSE MCP服务集成到百炼平台,完成智能体应用的创建与测试。适合希望了解SSE实时交互及大模型集成的开发者参考。
11874 60
|
2月前
|
监控 安全 网络协议
谈一谈如何检测与防御端口扫描攻击
本文讲解了端口扫描攻击的原理与防御方法。介绍了端口的基本概念、扫描攻击的常见手段及其检测方法,并提供了从基础到高级的三层防御策略,帮助企业与个人有效防范端口扫描带来的安全威胁。
401 0
|
10月前
|
监控 Java Nacos
使用Spring Boot集成Nacos
通过上述步骤,Spring Boot应用可以成功集成Nacos,利用Nacos的服务发现和配置管理功能来提升微服务架构的灵活性和可维护性。通过这种集成,开发者可以更高效地管理和部署微服务。
3248 17
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
1105 0
|
JavaScript 前端开发 Java
SpringBoot配置文件 —— 超详细全方位教程
本文是一篇关于SpringBoot配置文件的超详细全方位教程,涵盖了配置文件的作用、SpringBoot中的配置文件格式、优先级、properties和yml配置文件的详解及语法、读取配置文件的方法、转义字符和单双引号的使用、配置对象、集合和Map,以及yml的优缺点。
1662 0
SpringBoot配置文件 —— 超详细全方位教程
|
监控 Java API
Spring Cloud 之 GateWay
Spring Cloud Gateway 作为API网关,处理客户端与微服务间的非业务逻辑,如权限验证、监控、路由转发。它通过Route(含ID、目标URI、Predicate和Filter)、Predicate(匹配请求条件)和Filter(请求前/后处理)实现动态路由。工作流程包括客户端请求->Gateway Handler Mapping->过滤器链->服务转发->响应过滤->回客户端。过滤器用于请求拦截、响应处理,如参数校验、权限检查。动态路由允许以服务名创建路由,实现服务发现。预设和全局过滤器用于特定或所有路由的定制逻辑,例如登录验证和请求头管理。
|
消息中间件 负载均衡 算法
聊聊 RocketMQ中 Topic,Queue,Consumer,Consumer Group的关系
本文详细解析了RocketMQ中Topic、Queue、Consumer及Consumer Group之间的关系。文中通过图表展示了Topic可包含多个Queue,Queue分布在不同Broker上;Consumer组内多个消费者共享消息;并深入探讨了集群消费与广播消费模式下Queue与Consumer的关系,以及Rebalancing机制在实例增减时如何确保负载均衡。理解这些关系有助于更好地掌握RocketMQ的工作原理,提升系统运维效率。
2817 2
|
Java 数据库连接 Spring
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could
这个错误通常出现在使用Spring Boot进行数据库连接时。错误信息表明Spring Boot未能配置一个DataSource,因为没有指定'url'属性,并且没有发现默认的数据库连接。
5780 0
|
机器学习/深度学习 存储 人工智能
大数据中自然语言处理 (NLP)
【10月更文挑战第19天】
732 60

热门文章

最新文章