我想有两个类实现同一个接口,但一个应该在测试运行时使用,另一个应该在实际代码运行时执行。这应该以环境为基础。因此,如果环境是“ci”,则应使用测试实现,如果环境是“开发”或“生产”,则应使用实际实现。如何使用springboot和遵循最佳实践来实现这一点?
kgsdhlau1#
一种方法是根据条件将类作为组件加载。1.可以利用Spring轮廓。
@Profile("Cl")
这将根据激活的Spring配置文件相应地加载所需的类。在application.properties中
spring.profiles.active=CL
示例代码:
public interface Sample { void runData();}@Component@Profile("CL")public class TestSample implements Sample { @Override public void runData(){ // your code }}
public interface Sample {
void runData();
}
@Component
@Profile("CL")
public class TestSample implements Sample {
@Override
public void runData(){
// your code
类似地,您可以为dev中需要的其他类设置profile2.你也可以利用 @ConditionalOnProperty(name="propertyname" , havingValue="true") 您可以通过在相应环境的application.properties文件中设置“propertyname”来控制它应用程序属性
@ConditionalOnProperty(name="propertyname" , havingValue="true")
propertyname=true
@Component@ConditionalOnProperty(name="propertyname" , havingValue="true")public class TestSample implements Sample { @Override public void runData(){ // your code }}
1条答案
按热度按时间kgsdhlau1#
一种方法是根据条件将类作为组件加载。
1.可以利用Spring轮廓。
这将根据激活的Spring配置文件相应地加载所需的类。
在application.properties中
示例代码:
类似地,您可以为dev中需要的其他类设置profile
2.你也可以利用
@ConditionalOnProperty(name="propertyname" , havingValue="true")
您可以通过在相应环境的application.properties文件中设置“propertyname”来控制它应用程序属性
示例代码: