繁体   English   中英

如何在spring容器中一次初始化bean并在各处使用它

[英]how to initialize a bean in spring container once and use it everywhere

实际上,我使用Spring开发Web应用程序时,面临的问题是,一旦加载Spring容器,我就要初始化一个bean,现在我必须在程序的不同部分中使用该bean。 我具有1.的约束。我可以在任何地方获取应用程序上下文并获取该bean,但是根据我的问题,我应该获取该bean而不必一次又一次地编写该冗余代码。因此,有什么方法可以初始化该bean并使用它直接在我程序中的任何地方。

您不应该直接从上下文中获取bean,而应该@Autowire它们并让Spring为您注入它。

这是通过构造函数注入的两个依赖项的示例:

@Component
public class Car {

    private final Engine engine;
    private final Transmission transmission;

    @Autowired
    public Car(Engine engine, Transmission transmission) {
        this.engine = engine;
        this.transmission = transmission;
    }
}

请注意,您的类必须是Spring Component本身,才能进行注入。

在Spring中,实际上有三种类型的依赖项注入:构造函数,字段和setter注入。 Spring团队建议使用基于构造函数的方法,而本文为这一点带来了很好的论据: https : //blog.marcnuri.com/field-injection-is-not-recommended/

您可以参考此链接以获取有关基于构造函数的注入的更多信息: https : //www.baeldung.com/constructor-injection-in-spring

如果您已经初始化了bean,则可以从Spring应用程序中的每个组件通过@Autowired访问它。

private SomeClass myBean;

 @Autowired   
public void setMyBean(SomeClass myBean){
      this.myBean =myBean;
    }

要不就:

@Autowired
private SomeClass myBean;

我更喜欢第一种方法,在我眼中看起来更奇特。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM