我有Spring托管的应用程序,并尝试从数组访问注入的资源:
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collection;
@Service("serviceA")
class A {
@Resource
private HeaderLevelValidator defaultHeaderLevelValidator;
@Resource
private HeaderLevelValidator headerLevelValidator;
/** Validators specific for Storefront. */
private final Collection<HeaderLevelValidator> HEADER_BEAN_NAMES = Arrays.asList(defaultHeaderLevelValidator,
headerLevelValidator);
public Collection<HeaderLevelValidator> getHeaderValidators()
{
return HEADER_BEAN_NAMES;
}
}
我尝试在运行时使用getHeaderValidators()访问我的列表,但得到了null列表{null,null}。为什么?定义注入资源列表的正确方法是什么?
提前致谢!
最佳答案
问题在于HEADER_BEAN_NAMES
在注入bean之前已初始化。字段注入发生在对象实例化和初始化之后。尝试将初始化移动到带有@PostConstruct
注释的方法,或者如果要保留HEADER_BEAN_NAMES
最终,请改用构造函数注入。
关于java - 带有@Resource注入(inject)的字段的初始化数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23618516/