@SpringBootApplication
@EnableConfigurationProperties
public class Application implements ApplicationRunner {
public static void main(String[] args) {
SpringApplication.run(Application .class, args);
}
}
@Component
@ConfigurationProperties(prefix = "somePrefix")
public class AClass {
private final AnotherClass anotherClass;
private final Map<String, Double> aMap;
@Autowired
public AffinityChecks(AnotherClass anotherClass,
Map<String, Double> aMap) {
this.anotherClass = anotherClass;
this.aMap = aMap;
}
// Omissis
somePrefix:
aMap:
key1: 0.6
key2: 0.2
key3: 0.2
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'java.util.Map<java.lang.String, java.lang.Double>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
到底是怎么回事?
提前谢了。
Spring Boot不支持绑定到环境的元素的构造函数注入。当然,您可以用通常的方式注入实际的豆子。
您需要将每个要绑定的属性定义为常规Javabean属性(即使用getter/setter)。这个规则有一个例外:映射和非标量值(即嵌套内容)只需要一个getter。
具体地说,如果AnotherClass
是bean,FooClass
是一些具有嵌套属性的pojo。
@Component
@ConfigurationProperties(prefix = "somePrefix")
public class AClass {
private final AnotherClass anotherClass;
private final Map<String, Double> aMap = new HashMap<>();
private final FooClass foo = new FooClass();
public AClass(AnotherClass anotherClass) { ...}
public Map<String, Double> getaMap() { ... }
public FooClass getFoo() { ... }
}
问题内容: 我有一个带有以下内容的Spring Boot应用程序-基本上是从这里获取的: 我可以注入特定的值,例如 但是,我想注入整个地图,例如: 那(或类似的东西)可能吗?显然,我可以直接加载yaml,但是想知道Spring是否已经支持了某些东西。 问题答案: 你可以使用插入地图 使用问题中的yaml运行它会产生: 有多种选项可用于设置前缀,控制如何处理缺少的属性等。有关更多信息,请参见java
我有一个带有以下的spring boot应用程序--基本上取自这里: 我可以注入特定的值,例如。 然而,我想注入整个地图,即如下所示: 那(或类似的事情)可能吗?显然,我可以直接加载yaml,但我想知道spring是否已经支持了一些东西。
我引用了Spring boot-inject map from application.yml来从application.yml文件中注入map 下面是我的application.yml代码段 属性文件如下所示 但是,我发现只有当setter和getter的格式正确时才会发生值注入,即getPairMap和setPairMap。在使用getPairs或setpairs时不是这种行为的原因是什么
Spring Boot-从application.yml注入映射 在这个问题上,他们 为了将其映射到java代码中,他们建议使用注释。这个注释的问题是,您必须创建一个,然后在上面添加这个注释。 这样说我需要它: 上面的代码应该给出一个映射,其中key是,value是等字段的对象(当然,如果这样做有效,我将为此创建一个POJO,而不是将其作为普通对象)。 注意:对字段不起作用,这就是为什么我想看看是
项目: el-admin 后台 代码如下 deptService 对象没有用过注解, 为什么还能调用 deptService.download ? 有没有大佬知道这个对象是怎么被实例化的? 完整的 DeptController 代码如下