春季启动:特定于Bean创建配置文件

问题描述

我正在使用Spring Boot应用程序。我正在使用Spring Boot版本:2.2.4-RELEASE

我正在尝试创建一个特定于概要文件的bean,但是该bean并未按预期创建。

下面是我的配置文件

@Configuration
@Slf4j
public class TestConfig {

  //below is the bean i need to be created for dev and test
  @Bean
  @Profile({“dev”,“test”})
  TestObject getTestObject() {

        //do something
  }

//below is the bean i need to be created for staging and prod
  @Bean
  @Profile({“staging”,“prod”})
  TestObject getTestObject() {

        //do something
  }


//someother beans common for all profiles

}

Service.java

@Service
public class Serviceclass {

  @Autowired
   private TestObject testObj;

   //some methods

}

我尝试了上述方法,但是bean是 没有为任何配置文件创建。关于如何实现这一目标的任何建议都会有所帮助。

更新:由于服务类之一依赖于我要创建的bean,因此应用程序无法启动。

谢谢。

解决方法

在发现的笔记中

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html

使用不同的Java方法名称指向相同的bean名称

,

您必须为该应用程序激活配置文件。您可以将运行时参数作为 -Djava.profiles.active = dev 传递。它将解决您的问题。 另外,需要创建特定于环境的属性文件,例如 application- {env} .properties

,

我认为问题是相同的方法名称。由于某种原因,如果我使用相同的名称(方法重载),则会遇到问题。找到了一个类似的线程来解释相同的内容。

非常感谢所有尝试解决此问题的人。

注意:我将尝试找到该线程,并在此处更新该线程,以解释相同的内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...