如何根据活动弹簧配置文件切换弹簧启动启动类
问题描述:
我想我误解了Spring启动配置文件功能。 我在春天启动的应用程序有两个独立的启动类(ApplicationLocal和ApplicationProduction), 这些类注释这样如何根据活动弹簧配置文件切换弹簧启动启动类
@SpringBootApplication
@EnableSwagger2
@Import(value={Config.class})
@ComponentScan(basePackages={"com.abc.*"})
@Profile("local")
public class ApplicationLocal extends SpringBootServletInitializer {
//
@SpringBootApplication
@EnableSwagger2
@Import(value={Config.class})
@ComponentScan(basePackages={"com.abc.*"})
@Profile("production")
public class ApplicationProduction extends SpringBootServletInitializer {
//
,我想在这取决于运行时得到回升相应的启动类增长春天启动-Dspring.profiles.active jvm争论的价值。 但它不是为我工作,除非我提到的启动类部分的pom.xml 这样的..
<properties>
<start-class>com.abc.web.service.ApplicationLocal</start-class>
</properties>
如果我不提在pom.xml中的启动类,然后我得到以下错误: (我运行应用程序如下
mvn spring-boot:run -Drun.jvmArguments=" -Dspring.profiles.active=local"
而且我得到以下错误
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.3.3.RELEASE:run (default-cli) on project payee-list-ws: Execution default-cli of goal org.springframework.boot:spring-boot-maven-plugin:1.3.3.RELEASE:run failed: Unable to find a single main class from the following candidates [com.abc.web.service.ApplicationProduction, com.abc.web.service.ApplicationLocal] -> [Help 1]
答
您可以创建一个主CLAS S和两个配置每个ENV:
@SpringBootApplication
@EnableSwagger2
@Import(value={Config.class})
@ComponentScan(basePackages={"com.abc.*"})
public class Application extends SpringBootServletInitializer {
//
@Configuration
@Profile("production")
public class ConfigProduction {
//...
}
@Configuration
@Profile("Local")
public class ConfigLocal {
//...
}
为主类的将扫描豆类,Spring会根据您的实际轮廓挑选正确的配置。
+0
完美的为我工作。谢谢。 –
真的需要有不同的课程吗?每个配置文件有多少不同的业务逻辑?还是只有一些配置不同,如不同的数据库连接或如此? – Patrick