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