我有一个配置YAML(application.yml)文件,其中包含位置数据:
locations:
countries:
PL: Poland
DE: Germany
UK: UK
RU: Russia
我想加载它,以便它在html选择字段中可用。
我创建了以下类:
package eu.test.springdemo.model;
import org.springframework.boot.context.properties.ConfigurationProperties;
import java.util.Map;
@ConfigurationProperties(prefix = "locations")
public class CountryOptions {
private Map<String, String> countries;
public Map<String, String> getCountries() {
return countries;
}
public void setCountries(Map<String, String> countries) {
this.countries = countries;
}
}
然后我通过@Autowire将CountryOptions注入Controller。但是控制器中的国家列表为空。
应用程序的配置由包含以下注释的类提供:
@Configuration
@EnableWebMvc
@EnableConfigurationProperties(CountryOptions.class)
@ComponentScan(basePackages="eu.test.springdemo")
public class DemoAppConfig implements WebMvcConfigurer {
控制器代码
package eu.test.springdemo.mvc;
import eu.test.springdemo.model.CountryOptions;
import eu.test.springdemo.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/")
public class HelloController {
@Autowired
CountryOptions countryOptions;
@GetMapping("/")
public String showPage() {
return "main-menu";
}
@GetMapping("/showForm")
public String showForm(Model model) {
model.addAttribute("student", new Student());
model.addAttribute("countries", countryOptions.getCountries());
return "helloworld-form";
}
}
那么-有什么想法为什么国家列表不是从yaml文件创建的吗?
@ConfigurationProperties是Spring Boot功能,不会绑定到应用程序。yml,如果您不使用它。最好的解决方案通常是转换为引导。
属性文件如下所示: 根据这一点,我尝试了以下方法: 在另一个组件中,我autowired应用特性:
我有这样的价值观application.yaml 在服务中,我尝试注入它: 但我有个例外: 原因:java.lang.IllegalArgumentException:无法解析占位符“导入收费字段”的值“${导入收费字段}” 我尝试以下方法: 和 和 而且它不工作
我想在我的yaml文件中定义一个映射以在yaml文件中使用。 注意:我们对 yaml 有一个预处理步骤,它基本上允许我们插入可替换的令牌。我想使用替换令牌的值作为我的密钥...这就是为什么我不知道在我写yaml时我想要什么价值,只是FYI 所以简而言之,我想做的是这样的事情 或 或 我期望的结果是 然而使用https://yaml-online-parser.appspot.com/ 我可以看到这
问题内容: 我有一个带有以下内容的Spring Boot应用程序-基本上是从这里获取的: 我可以注入特定的值,例如 但是,我想注入整个地图,例如: 那(或类似的东西)可能吗?显然,我可以直接加载yaml,但是想知道Spring是否已经支持了某些东西。 问题答案: 你可以使用插入地图 使用问题中的yaml运行它会产生: 有多种选项可用于设置前缀,控制如何处理缺少的属性等。有关更多信息,请参见java
我有一个带有以下的spring boot应用程序--基本上取自这里: 我可以注入特定的值,例如。 然而,我想注入整个地图,即如下所示: 那(或类似的事情)可能吗?显然,我可以直接加载yaml,但我想知道spring是否已经支持了一些东西。
我有以下问题。我根据一个给定的概要文件在yaml文件中读取的值创建一个数据源。 我当前的问题是,当我用“dev”配置文件启动应用程序时,serviceId的值是'my-prod-service'。 我在这里做错了什么?