【发布时间】:2017-04-18 11:27:24
【问题描述】:
我是新来的春天,并被困在某个点上,如下所述 -
我有一个具有两个不同实现名称的类颜色,红色和蓝色,我想使用 @inject 将两者注入颜色列表。
Below is my ApplicationConfiguration class
package org.arpit.java2blog.config;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.inject.Inject;
import org.arpit.java2blog.model.Country;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@Import(CountryConfig.class)
public class ApplicationConfiguration {
@Inject
private List<Color> colorList;
@Bean
public List<Color> colorList() {
System.out.println("Second");
List<Color> aList = new ArrayList<Color>();
aList.add(new Blue());
return aList;
}
}
但得到异常
自动装配依赖注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:不能 自动装配字段:私有 java.util.List org.arpit.java2blog.config.ApplicationConfiguration.colorList;嵌套的 例外是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 为 [org.arpit.java2blog.config.Color] 找到了符合条件的 bean 依赖项 [org.arpit.java2blog.config.Color 的集合]:预期 至少 1 个 bean 有资格作为自动装配候选者 依赖。依赖注解:{@javax.inject.Inject()}
【问题讨论】:
-
你上课的
Color看起来怎么样?它有@Component注释吗?它在 Spring 上下文中可用吗? -
不,它只是一个没有@component 的简单普通类
-
不确定,但@resource 注释也能正常工作
-
你的颜色等级怎么样?如果 spring 上下文不知道它就不能自动装配。
-
public interface Color {} 有两个实现 Red 和 Blue 都是没有注释的普通类,但不确定使用 @resource 注释如何正常工作
标签: java spring dependency-injection