java - 如何确保在开始返回 bean 之前将资源注入(inject)到我的配置中?

标签 java spring configuration annotations

我正在尝试定义一个 bean,它是我使用 @Component 注释配置的 bean 列表。我使用的是 spring 3.1。

我的@Configuration类看起来像

@Configuration
public class ReferenceDataConfig {
    private ResourceA resourceA;

    @Resource
    private ResourceB resourceB;

    @Resource
    private ResourceC resourceC;

    @Resource
    private ResourceD resourceD;

    @Bean (name = "myResourceList")
    public List<MyResource> getResourceLst() {
        return Arrays.asList(
                resourceA
                , resourceB
                , resourceC
                , resourceD
        );
    }

    @Resource  (name = "resourceA")
    public void setResourceA(ResourceA resourceA) {
        this.resourceA = resourceA;
    }

我发现 getResourceLst 在任何资源初始化之前被调用。当我添加 setResourceA 方法时,我可以看到它最终被调用,但是当它被调用时已经太晚了。 myResourceList bean 已经创建。

我该如何处理这个问题?

谢谢, 彼得

最佳答案

根据您具体想要做什么,解决方案可能比您想象的更简单。

如果List<MyResource>应该包含 MyResource 类型的所有 bean ,那么您不必为列表声明单独的 bean。您可以像注入(inject)任何其他 bean 一样注入(inject)该列表,Spring 将收集 MyResource 类型的所有 bean。它在应用程序上下文中找到并将它们全部注入(inject) List<MyResource>对象。

关于java - 如何确保在开始返回 bean 之前将资源注入(inject)到我的配置中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10974198/

相关文章:

java - 如何使用鉴别器将一对多集合与连接表映射

java - 在 Spring Starter 类中使用 @Value 注解

java - Spring @Autowired 是按名称还是按类型注入(inject) bean?

java:编译后无法运行程序?帮我

Java "Virtual Machine"与 Python "Interpreter"的说法?

java - 如何在JPanel上绘图的其他类中创建方法

java - Spring Roo DBRE 使用 GWT 生成项目的问题

java - 资源未加载到可执行 Spring boot jar 中 - 可执行 jar 如何加载资源?

xcode - 在配置设置中使用 .xcconfig 文件的路径

java - 任何 Apache Commons-Configuration 替代品/竞争对手?