【问题标题】:Spring does not inject beans in my java applicationSpring 不会在我的 Java 应用程序中注入 bean
【发布时间】:2022-12-01 00:50:06
【问题描述】:

我有两个类,我想使用 Spring 将一个类注入另一个类

public class A {
    private B b;
    ...
}

@Component
public class B {
    ...
}

但是当我尝试调用 b 对象方法时,我 cath NullPointerException。而且一直不明白为什么Spring不在A类中注入bean。有人可以向我解释什么是错的吗?

全世界的Spring文档我都看了一遍,也没有找到解决办法。

【问题讨论】:

  • 如何创建 A 和 B 的实例?两者都需要由 spring 创建。此外,我在这里没有看到任何 @Autowired 注释。

标签: java spring


【解决方案1】:

请注意,根据您的代码 A 不是由 Spring 管理的(它不是由它注释的),因此,没有任何实例化 B

要解决这个问题,您还应该将 A 标记为一个组件:

@Component
public class A {
    private B b;
    ...
}

@Component
public class B {
    ...
}

此外,使用构造函数注入总是比属性注入和/或 setter-getter 注入更好,所以长话短说我会建议这种方法:

@Component
public class A {
    private final B b;

    public A(final B b) {
        this.b = b;
    }
}

@Component
public class B {
        ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多