有什么方法可以将@Autowired 变量传递给 Spring 引导应用程序中的其他 class 吗?

Is there any way to pass @Autowired variable to some other class in a Spring Boot application?

在我的 Spring 引导应用程序中,我有 class A。在那个 class 中,我用 @Autowired 注释声明了我的 DAO 层变量。我有一个单独的 Java 库,其中包含 class B(它有一个接受通用参数的方法)。我想将来自 class A 的 @Autowired 变量作为参数发送到 class B 的方法,并在 class B 的方法中对该变量执行一些操作。

有什么办法可以实现吗?第二个 class 会知道上下文吗?

是的,你可以做到,但这不是一个好的做法。如果你想创建一个单独的库,那就让它变得简单。您正在增加依赖性。

始终建议在构建应用程序时遵循松散耦合原则。

Will the second class be aware of the context?

我假设,第二个 class 你的意思是 class B。ClassB 不需要知道上下文。它唯一关心的是,它需要一个 DAO 层的非空对象作为方法参数。

所以,问题是,您在什么时候尝试调用 class B 中的方法。如果您在 spring 完成它的一部分之前调用它,那么您将得到的只是null。尝试从 @PostConstruct 注释方法调用 ClassB.method() 并查看您是否仍在获取 DAO 成员变量的 null 引用。如果是这种情况,请查看您的 spring bean 实例化。