解析Spring Boot中的Profile:配置文件与代码的双重掌控
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.Bean;
@Configuration
@Profile("production") // 仅在"production" profile激活时,该配置类生效
public class ProductionConfiguration {
@Bean
public MyService myService() {
// 在这里配置生产环境下的MyService实例
return new MyServiceImpl();
}
}
@Configuration
@Profile("!production") // 当"production" profile未激活时,该配置类生效
public class DevelopmentConfiguration {
@Bean
public MyService myService() {
// 在这里配置开发环境下的MyService实例
return new MockMyService();
}
}
在这个例子中,我们定义了两个配置类,ProductionConfiguration
和DevelopmentConfiguration
,它们分别用@Profile("production")
和@Profile("!production")
注解标记,表示只有在相应的Spring Boot profile激活时它们才会生效。MyService
的实例化在这里通过配置类中的@Bean
注解的方法来完成,这样就可以根据当前的环境配置来创建服务实例。这种方式既可以通过配置文件来控制环境,也可以通过代码来控制不同环境下的实例化逻辑,实现了配置与代码的双重掌控。
评论已关闭