解析Spring Boot中的Profile:配置文件与代码的双重掌控

这篇具有很好参考价值的文章主要介绍了解析Spring Boot中的Profile:配置文件与代码的双重掌控。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建一个spring boot 项目

基于 Spring Boot 创建 Web 应用程序的方法有很多,我们选择在idea中直接进行创建,服务器URL选择Spring Initializer 网站,类型选择Maven项目,java版本根据jdk版本进行选择。
解析Spring Boot中的Profile:配置文件与代码的双重掌控,JavaEE,spring boot,后端,java,spring,学习
然后添加相应依赖以及选择spring boot版本

解析Spring Boot中的Profile:配置文件与代码的双重掌控,JavaEE,spring boot,后端,java,spring,学习
接下来我们写一个Controller

@RestController
@RequestMapping("/user")
public class UserController {
    // 请求映射,用于处理请求
    @RequestMapping("/zcx")
    public Userinfo getUserInfo() {
        // 创建Userinfo对象
        Userinfo userinfo = new Userinfo();
        // 设置age属性
        userinfo.setAge("45");
        // 设置name属性
        userinfo.setName("zcx-yyds");
        // 返回Userinfo对象
        return userinfo;
    }

}

现在我们需要对这个应用程序进行打包,使用idea上的打包工具,点击package进行打包
解析Spring Boot中的Profile:配置文件与代码的双重掌控,JavaEE,spring boot,后端,java,spring,学习
我们将得到一个springboot1-0.0.1-SNAPSHOT.jar文件,而这个 jar 文件就是可以直接运行的可执行文件,内置了 Tomcat Web 服务器。我们直接使用如下命令进行运行这个Spring boot程序。

java -jar springboot1-0.0.1-SNAPSHOT.jar

然后我们使用postman来进行项目访问测试,得到如下返回结果,证明我们的程序服务已经启动成功了。

解析Spring Boot中的Profile:配置文件与代码的双重掌控,JavaEE,spring boot,后端,java,spring,学习
现在我们已经明白如何构建、打包以及运行一个简单的 Web 应用程序了。

spring boot 中的配置体系

在 Spring Boot 中,其核心设计理念是对配置信息的管理采用约定优于配置,也就是说约定大于配置
Spring Boot中的Profile是一个非常有用的功能,它可以让我们在不修改代码的情况下,通过配置文件来控制程序的行为。
在Spring Boot中,Profile是一种用于控制应用程序行为的机制。通过使用不同的Profile,我们可以根据不同的环境或场景来加载不同的配置信息,从而实现应用程序的灵活配置。

配置文件与 Profile

根据环境的不同而存在很多套配置。假设我们存在如下所示的配置文件集合:
解析Spring Boot中的Profile:配置文件与代码的双重掌控,JavaEE,spring boot,后端,java,spring,学习
配置文件application-dev.properties中的代码为:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db
spring.datasource.username=root 
spring.datasource.password=666666

配置文件application-prod.properties中的代码为:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/prod_db
spring.datasource.username=root 
spring.datasource.password=666666

常见的配置文件命名方式有以下几种:
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

在 Spring Boot 中,我们可以在主 application.properties 中使用如下的配置方式来激活当前所使用的 Profile:

spring.profiles.active = dev

当然还有以下几种方式启动Profile:

  1. 在主 application.properties指定要激活的Profile。
spring.profiles.active = dev
  1. 在启动命令中指定Profile。
java -jar springboot1-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
  1. 在程序中显示设置Profile。例如:
@SpringBootApplication
public class Springboot1Application {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(Springboot1Application.class);
        app.setAdditionalProfiles("dev");
        app.run(args);
    }
}

这将激活名为prod的Profile。

代码控制与Profile

在 Spring Boot 中,Profile 这一概念的应用场景还包括动态控制代码执行流程。为此,我们需要使用 @Profile 注解,Profile注解可以用于指定某个类或方法在特定的配置环境下生效。只要是被@Component@Configuration注解的类都可以使用@Profile注解。
使用一个示例来了解Profile注解的使用方法:

@Configuration
public class DataSourceConfig {
    @Bean
    @Profile("dev")
    public DataSource devDataSource() {

        //创建 dev 环境下的 DataSource
        return null;
    }

    @Bean()
    @Profile("prod")
    public DataSource prodDataSource() {

        //创建 prod 环境下的 DataSource
        return null;
    }

}

通过这种方式,可以达到与使用配置文件相同的效果。
我们来看一个更为详细具体的例子:

  1. 创建一个接口 MyService
public interface MyService {
    void doSomething();
}
  1. 创建两个不同的实现类,分别用于不同的配置文件。

@Component
@Profile("prod")
public class ProdMyService implements MyService {
    @Override
    public void doSomething() {
        System.out.println("Prod service is running.");
    }
}

@Component
@Profile("dev")
public class DevMyService implements MyService {
    @Override
    public void doSomething() {
        System.out.println("Dev service is running.");
    }
}

上述示例中,我们创建了两个不同的实现类,一个用于 development 配置文件,另一个用于 production 配置文件。@Profile 注解分别标记了它们,以便 Spring 知道在哪个配置文件下激活它们。
3. 在 Spring 配置文件(例如 application.propertiesapplication.yml)中指定要激活的配置文件,例如: application.properties

spring.profiles.active=prod

spring.profiles.active 设置为 development,表示我们希望激活的开发配置文件。
4. 创建一个启动类,以演示如何使用 MyService

@SpringBootApplication
public class Springboot1Application implements CommandLineRunner {

    // 声明一个注入的MyService对象
    @Autowired
    private MyService myService;

    // 声明一个名为run的方法,用来启动Spring应用
    public static void main(String[] args) {
        // 调用SpringApplication的run方法,传入Springboot1Application类和args参数
        SpringApplication.run(Springboot1Application.class, args);
    }

    // 方法run,用来执行Spring应用的业务逻辑
    @Override
    public void run(String... args) {
        // 调用myService的doSomething方法
        myService.doSomething();
    }
}

解析Spring Boot中的Profile:配置文件与代码的双重掌控,JavaEE,spring boot,后端,java,spring,学习
通过结果我们发现运行这个应用程序时,它会根据配置文件中的 spring.profiles.active 属性来选择相应的实现类。
如果你还想了解更多内容请参考spring boot官网。文章来源地址https://www.toymoban.com/news/detail-708285.html

到了这里,关于解析Spring Boot中的Profile:配置文件与代码的双重掌控的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring Boot】自动配置及重要注解解析

    1、springboot自动配置了哪些功能 1)tomcat的自动配置 引入了tomcat的相关依赖 2)自动配置springmvc及常用功能 我们在主启动类中加两行代码,查看一下spring boot加载了哪些组件 通过在控制台输出中搜索,我们可以发现转发请求的dispatcherServlet、解决乱码的characterEncodingFilter还有视

    2023年04月09日
    浏览(41)
  • 【Spring Boot】Spring Boot配置文件详情

     Spring Boot是一个开源的Java框架,用于快速构建应用程序和微服务。它基于Spring Framework,通过自动化配置和约定优于配置的方式,使开发人员可以更快地启动和运行应用程序。Spring Boot提供了许多开箱即用的功能和插件,包括嵌入式Web服务器、安全性、数据访问、缓存、测试

    2024年02月12日
    浏览(56)
  • 深入解析Spring Boot中的注解@PathVariable、@RequestParam、@RequestBody的正确使用

    🎉深入解析Spring Boot中的注解@PathVariable、@RequestParam、@RequestBody的正确使用 ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹 ✨博客主页:IT·陈寒的博客 🎈该系列文章专栏:架构设计 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习 🍹文章作者技术和水平

    2024年02月04日
    浏览(54)
  • Spring —— Spring Boot 配置文件

    JavaEE传送门 JavaEE Spring —— Bean 作用域和生命周期 Spring —— Spring Boot 创建和使用 如果没有配置信息, Spring Boot 项目就不能连接和此操作数据库, 甚至是不能保存可以用于排查问题的关键日志, 配置文件的作用是非常重要的. 系统使用的配置文件 (系统配置文件), 如端口号的配

    2023年04月09日
    浏览(40)
  • spring boot中的多环境配置

    的作用是为了启动某个环境,两个作用基本一致, 环境定义如下: 或者是查找application-dev.yml这个文件的所有配置 加载问价,使用的是import,注意语法:

    2024年02月06日
    浏览(40)
  • Spring Boot中的Elasticsearch自动配置

    Elasticsearch是一个基于Lucene的分布式全文搜索引擎,它在搜索、分析等方面具有出色的表现。Spring Boot中的Elasticsearch自动配置为我们提供了一种快速集成Elasticsearch的方式,使我们可以在Spring Boot应用程序中轻松地使用Elasticsearch。 本文将介绍Spring Boot中的Elasticsearch自动配置的作

    2024年02月12日
    浏览(40)
  • Spring Boot 中的 CSRF 保护配置

    CSRF(Cross-Site Request Forgery)是一种网络攻击,它利用已认证用户的身份来执行未经用户同意的操作。Spring Boot 提供了内置的 CSRF 保护机制,可以帮助您防止这种类型的攻击。本文将介绍如何在 Spring Boot 中配置和使用 CSRF 保护。 CSRF 攻击是一种利用用户已经在网站上进行了身份

    2024年02月07日
    浏览(32)
  • 深入解析Spring Boot与MySQL在医院信息管理系统中的应用

    ✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 | SpringBoot/SSM Python实战项目 | Django 微信小

    2024年01月23日
    浏览(48)
  • Spring Boot 中的自动配置(autoconfigure)

    文中部分图片来源为 动力节点-王鹤老师的Spring Boot3.0 视频讲解中。 自动配置:从类路径中,搜索相关的 jar,根据 jar 的内容,尝试创建所需的对象。例如,如果有 MyBatis .jar,Spring Boot 会尝试创建 DataSource(根据配置文件中的url,username,password)连接数据库。还需要创建 S

    2024年01月25日
    浏览(36)
  • Spring Boot 中的 RabbitMQ 消息发送配置

    RabbitMQ 是一个开源的消息代理系统,它实现了 AMQP(高级消息队列协议)标准,并支持多种消息传输协议。它具有高可用性、可扩展性和可靠性,广泛应用于分布式系统、微服务架构、异步任务处理、日志收集等场景。 RabbitMQ 的核心概念包括: Producer:消息生产者,负责将消

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包