两个springboot运行时同一个application的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个springboot运行时同一个application的问题相关的知识,希望对你有一定的参考价值。
参考技术A 在测试feign的时候,准备了2个springboot应用,一个是producer,另一个是service。但是当通过junit同时启动2个应用的时候,两个应用都读取了同一个application.properties。那么如何解决这个问题呢?
1、修改application.properties名称,修改为application-a.properties
2、在springboot启动类中args改成new String[]"--spring.profiles.active=a"
多个 SpringBoot 应用,只想运行一个
【中文标题】多个 SpringBoot 应用,只想运行一个【英文标题】:Multiple SpringBoot apps, want to run only one 【发布时间】:2017-03-17 22:38:37 【问题描述】:我目前正在使用 SpringBootApplications,我有两个不同的 @SpringBootApplication,一个用于 Web 应用程序,一个用于 CommandLineRunner。
问题是,无论我执行哪一个,它都会尝试运行这两个应用程序。
package com.ws;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.Configuration;
@EnableAutoConfiguration
public class Init extends SpringBootServletInitializer
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
return application.sources(Init.class);
/**
* Main method.
*
* @param args String[].
* @throws Exception Exception.
*/
public static void main(String[] args) throws Exception
SpringApplication.run(Init.class, args);
这是我的另一个 InitBatch.java :
package com.batch;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class InitBatch implements CommandLineRunner
@Autowired
private Batch batch;
@Override
public void run(String... args) throws Exception
batch.processFiles();
public static void main(String[] args) throws Exception
SpringApplication.run(InitBatch.class, args);
如果我运行 CommandLineRunner 应用程序,它在执行后会继续加载 Web 应用程序。 我需要能够分别运行它们中的每一个。但我不知道如何配置它。
谢谢!
【问题讨论】:
请在主类源中包含包。 How do I tell Spring Boot which main class to use for the executable jar?的可能重复 您是否使用 maven 构建代码? 【参考方案1】:春季文档说:
SpringBootApplication:这是一个方便的注解,相当于声明@Configuration、@EnableAutoConfiguration和@ComponentScan。
您应该只添加一个@EnableAutoConfiguration 注释。我们通常建议您将其添加到您的主要 @Configuration 类中。
如此有效地添加了 2 个 EnableAutoConfiguration 注释,这是 Spring Boot 所不允许的。我建议使用 spring Profiles 来实现你所需要的。
【讨论】:
以上是关于两个springboot运行时同一个application的问题的主要内容,如果未能解决你的问题,请参考以下文章