我有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/

10-10 14:03