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

YAML文件的Spring引导配置问题

萧展鹏
2023-03-14
    proj:
     sms:
      gateway:
        username: d
        password: erer
        signature: e
        url: http://link.somelink.com
      actionKeyMap:
       OTP_GENERATOR: Value1
       CREATE_USER: Value2
@Component
@ConfigurationProperties(prefix="proj.sms")
public class MessageResolver {

    //@Value("${proj.sms.actionKeyMap}")
    private Map<String, String> actionKeyMap;

ConfigurationProperties或值注释不起作用。

共有1个答案

谷弘致
2023-03-14

添加注释中讨论的代码

application.yml

proj:
  sms:
    gateway:
        username: d
        password: erer
        signature: e
        url: http://link.somelink.com
    actionKeyMap:
      OTP_GENERATOR: Value1
      CREATE_USER: Value2

Spring boot Application.java

package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
//@EnableConfigurationProperties
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);

    }
}
package hello;

import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix="proj.sms")
public class MessageResolver {

    //@Value("${proj.sms.actionKeyMap}")
    private Map<String, String> actionKeyMap;

    @Value("${proj.sms.actionKeyMap.OTP_GENERATOR}")
    private String test;

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }

    public Map<String, String> getActionKeyMap() {
        return actionKeyMap;
    }

    public void setActionKeyMap(Map<String, String> actionKeyMap) {
        this.actionKeyMap = actionKeyMap;
    }

}
package hello;

import java.util.concurrent.atomic.AtomicLong;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @Autowired
    MessageResolver messageResolver;

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {

        System.out.println(messageResolver.getTest());
        System.out.println(messageResolver.getActionKeyMap());
        return new Greeting(counter.incrementAndGet(),
                            String.format(template, name));
    }
}
package hello;

public class Greeting {

    private final long id;
    private final String content;

    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public String getContent() {
        return content;
    }
}
Value1
{OTP_GENERATOR=Value1, CREATE_USER=Value2}
 类似资料:
  • 我不确定我是否很好地理解了Spring概要文件是如何处理yaml和属性文件的。我试图将这两种类型的配置分开(这两个文件不共享任何配置),但在从yaml配置中读取配置文件时遇到了问题。 我的问题是,当我试图(通过xml)配置我的数据源时,这样做: Spring总是使用YAML文件中的最后一个配置,忽略概要文件。我试图通过web.xml中的contex-parameter或直接将活动概要文件传递给JV

  • 我有一个旧的Spring启动应用程序(1.5.0-FINAL),我无法更改此版本。我想将redis添加到我的应用程序中,这就是我所做的: 1) 添加了maven dep: 2)将属性添加到我的引导 3) 添加了配置属性以检查是否启动连接: 上面的主机/端口不存在:我只想在启动时看到类似“连接错误”的东西,以确保我配置了所有内容,但没有显示任何内容!spring boot似乎没有尝试使用缓存。 我错

  • 我有一个带应用程序的spring boot应用程序。属性文件和spring数据jpa。在应用程序中,我有一个外部依赖项,需要加载外部Spring项目的bean,该项目具有基于xml的配置。外部xml有自己的组件扫描和spring jpa设置,可以与应用程序中提供该DB属性的其他DB进行交互。属性文件,我正在使用@ImportResources将其bean注入父应用程序。但是,当我在做这个sprin

  • 我有一个设置,我正在使用以下内容: Spring靴1.5。13使用Spring云版本Edgware。S3 我有Spring云配置服务器,我的Spring启动应用程序是它的客户端 每个应用程序都有一个引导程序。带有配置服务器uri和一些其他属性的yml 在码头工人群上运行集装箱 我目前正在通过一个自定义脚本将Swarm secrets传递给客户端,该脚本读取放入/run/secrets/中的文件,并

  • 我使用自动配置(仅通过注释)运行Spring启动和kafka,并在.yaml文件中定义了道具,即: 它工作得很好,spring maps即字段group-id正确。 但是当我尝试使用相同的yaml文件手动配置Kafka(使用消费者工厂和消费者配置)时,我遇到了问题。在类中,消费者配置Kafka属性以 命名。在名称中,而不是 _ 即: 所以我不能把它们加载到map中,然后把map传递给Consume