为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 spring 容器中初始化一个 bean 并在任何地方使用它

如何在 spring 容器中初始化一个 bean 并在任何地方使用它

慕丝7291255 2021-12-01 19:39:20
实际上,我正在使用 spring 来开发 Web 应用程序,我面临的问题是,一旦加载了 spring 容器,我就会初始化一个 bean,现在我必须在程序的不同部分使用该 bean。我有 1. 我可以在任何地方获取应用程序上下文并获取那个 bean,但是根据我的问题,我应该得到那个 bean,而不必一次又一次地编写冗余代码。所以有什么方法可以初始化那个 bean 并使用它直接在我的程序中的任何地方。
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

你不应该直接从上下文中获取你的 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 组件本身才能进行注入。


Spring 中的依赖注入实际上分为三种类型:构造函数注入、字段注入和 setter 注入。Spring 团队推荐使用基于构造函数的方法,这篇文章为这一点带来了非常好的论据:https : //blog.marcnuri.com/field-injection-is-not-recommended/


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


查看完整回答
反对 回复 2021-12-01
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

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


private SomeClass myBean;


 @Autowired   

public void setMyBean(SomeClass myBean){

      this.myBean =myBean;

    }

要不就:


@Autowired

private SomeClass myBean;

我更喜欢第一种方法,在我眼里看起来更漂亮。


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信