两个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的问题的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 配置文件同步 Maven 配置文件

吊炸天,springboot的多环境配置一下搞明白了!

吊炸天,springboot的多环境配置一下搞明白了!

吊炸天,springboot的多环境配置一下搞明白了!

Springboot与任务整合

springboot的核心配置文件