当前位置: 首页 > 知识库问答 >
问题:

如何在另一个带有默认配置文件的bean中使用spring配置文件bean?

左丘峰
2023-03-14
@Bean(name="internalDL")
public Map<Client, List<String>> internalDistributionLists() {
    Map<Client, List<String>> distributionLists = new HashMap<Client, List<String>>();
    distributionLists.put(Client.DL_NAME, Arrays.asList("example@blah.com"));
    return distributionLists;
}
@Autowired
@Qualifier("internalDL")
private Map<String, List<String>> internalMailingList;

@Bean(name="internalMailingDetails")
public Map<Client, MailingDetails> internalMailingDetails() {
    Map<Client, MailingDetails> internalMailingDetails = new HashMap<Client, MailingDetails>();

    MailingDetails details = new MailingDetails();

    details.setMailingList(internalMailingList.get(Client.DL_NAME));
    details.setTemplateSubject("someTemplate");
    details.setTemplateBody("someTemplate");
    internalMailingDetails.put(Client.DL_NAME, details);

    return internalMailingDetails;
}

现在邮件模板对于所有环境都是一样的,所以我没有把它放在一个用特定配置文件标记的配置中。

我尝试通过初始化ApplicationContextInitializer 类来初始化概要文件:

@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
    applicationContext.getEnvironment().setActiveProfiles("dev");
}

并将其作为上下文参数:

<context-param>
    <param-name>spring.profiles.active</param-name>
    <param-value>dev</param-value>
</context-param>

谢谢你的帮助。

共有1个答案

蒯卓君
2023-03-14

@Autowired对收集豆不起作用。使用@resource而不是@autowire

@Resource
private Map<String, List<String>> internalMailingList;

并引用beans-property-is-not-setting-from-utillist-object

如果稍后使用Spring4.x,请查看spring-framework-4-0和-java-generics

 类似资料:
  • 主要内容:默认配置文件,示例通常情况下,Spring Boot 在启动时会将 resources 目录下的 application.properties 或 apllication.yml 作为其默认配置文件,我们可以在该配置文件中对项目进行配置,但这并不意味着 Spring Boot 项目中只能存在一个 application.properties 或 application.yml。 默认配置文件 Spring Boot

  • 问题内容: 在我的应用程序中,我有用和注释的bean 。您可能会猜到:)第一个用于连接到生产数据库的bean,第二个注释使用伪造的DB(或其他)的bean,以加快开发速度。 我想要的是默认配置文件(),如果未被“ something-else ” 覆盖,它将始终使用。 完美将是在我的: 然后用覆盖它,这样我就可以做到: 但是可悲的是这是行不通的。知道我怎么能做到吗?我无法在所有环境上进行设置。 问

  • 在我的应用程序中,我有用和注释的bean。第一个,你可以猜到:),用于连接到生产数据库的bean,第二个注释使用一些假数据库(或其他任何东西)的bean,以使开发更快。 我想要的是默认配置文件(),如果它不被"某物"覆盖,它将始终使用。 在我的: 然后用覆盖它,这样我就可以: 但可悲的是,这是行不通的。你知道我怎么能做到吗?设置在我的所有环境中都不是一个选项。

  • 基本上,我想问的是:将Spring Boot自动配置的bean自动导入XML配置文件的等价物是什么? 下面是我的主要Spring Boot入口点,它只是所有文档中列出的标准类: 我主要在一个Spring集成应用程序中使用它,在这个应用程序中Java配置还没有得到很好的支持,框架的核心是基于XML配置的,但是我希望在一些集成元素中使用Spring Boot自动配置的和bean。 https://gi

  • 问题内容: 我有一个使用maven作为构建工具的应用程序。 我正在使用Maven配置文件从不同的配置文件设置不同的属性。 我想做的是将maven中的所有活动配置文件也移植到spring活动配置文件中,以便我可以在bean签名()中引用它们。但我不确定该怎么做。 例如:考虑以下Maven设置 假设我在未指定任何其他配置文件的情况下运行maven,而我希望spring具有和 配置为活动配置文件。 问题

  • 如果未设置,我希望默认活动配置文件为。 Spring-boot版本=1.3.5。发行版