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

时间:2018-10-23 04:47:32

标签: java xml spring spring-mvc

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

2 个答案:

答案 0 :(得分:0)

您不应直接从上下文中获取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

答案 1 :(得分:0)

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

private SomeClass myBean;

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

或者只是:

@Autowired
private SomeClass myBean;

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