前言
在上节中我们已经介绍了注解@Scope
对Bean
作用域的控制,大家感兴趣的话可参考
SpringBoot(24) — @Scope设置bean的作用域
今天我们介绍一个新的注解@Profile
。注解@Profile
可用于区分不同环境加载Bean。在讲此篇文章之前,我建议大家先了解下我之前写过的关于区分开发环境的文章
SpringBoot(8) — 自定义配置文件设置多开发环境
今天涉及内容有:
- 多开发环境的搭建
-
@Profile
的使用
一. 多开发环境的搭建
在Springboot
的开发过程中,我们会涉及到多开发环境的问题。如正式环境
与测试环境
的区分。那么这个知识点,我在SpringBoot(8) — 自定义配置文件设置多开发环境中已经讲过了。在那篇文章中,我们正式测试环境的区分都是通过在配置文件application.yml
中的设置属性来调控的。而我们今天讲的不同点在于,我们可以通过注解@Profile
在代码层给项目做不同环境的区分。这个区分也是建立在配置文件application.yml
区分开发环境的基础之上。因此,我们仍需要在项目中建不同的配置文件,用以标榜不同的开发环境。
下面以建立一个正式开发环境
和一个测试开发环境
去连接不同的数据库为例。
在项目/src/main/resources/
下新建两个配置文件application-release.yml
和application-test.yml
,项目示例截图如下:
这里,我们主要采用
@Profile
代码层开发环境的切换问题,所以不必在配置文件
application-release.yml
和application-test.yml
中去写数据库连接相关参数,我们将在代码中把数据库连接参数写死,然后通过@Profile
区分不同的环境。
二. @Profile 的使用
@Profile
区分不同开发环境和配置文件是息息相关的。@Profile
以@Profile(字符串)
的形式来区分不同开发环境。而@Profile(字符串)
的字符串正是application-字符串.yml
中的字符串
。举例说明,我们上面已经建立了两个开发环境的配置文件:application-release.yml
和application-test.yml
,则在代码中,我们可以通过@Profile("release")
和@Profile("test")
来区分正式系统和测试系统要执行的代码。下面以不同环境连接不同数据库为例,首先我们要写一个配置数据库参数的接口类ITs
: