spring中自动连线bean为null的原因

spring中自动连线bean为null的原因,spring,spring-mvc,nullpointerexception,javabeans,autowired,Spring,Spring Mvc,Nullpointerexception,Javabeans,Autowired,我遇到了一个问题,在运行时,某个类中的自动连接bean都是空的。我想要一个答案,它将涵盖为什么spring自动连线bean没有初始化的所有可能性 只使用java配置,根本不使用xml文件 新关键字仅用于bean定义 所有类和字段都有相应的注释 例如: 我猜这是我尝试使用服务的时候 @Configuration public ... // Constructor service = new Service(); // Field private Se

我遇到了一个问题,在运行时,某个类中的自动连接bean都是空的。我想要一个答案,它将涵盖为什么spring自动连线bean没有初始化的所有可能性

  • 只使用java配置,根本不使用xml文件
  • 新关键字仅用于bean定义
  • 所有类和字段都有相应的注释
例如:

我猜这是我尝试使用服务的时候

@Configuration
public ...

    // Constructor    
    service = new Service();

    // Field
    private Service service;

最可能的原因是对象实例不是Springbean(您希望注入的对象),换句话说:spring不知道该实例,因此不关心它


顺便说一句:如果Spring知道/处理该实例,并且找不到匹配的bean,那么
@Autowired
的默认结果就是一个例外。如果对象不是bean,则抛出异常,而不是自动连线的
null
。@acdcjunior:否相反:如果对象是bean,则抛出异常,而不是自动连线的null。(除了您使用
@Autowired(required=false)
)对象我指的是依赖项。@acdcjunior:那么这是对的,当然,spring只能注入bean。应该自动连接其字段的类,您确定您是通过向spring请求实例来创建它的吗?您确定您不仅仅是在调用
newmyclass()
并希望它的字段自动连接吗?因为它们只有在您从spring上下文中获取
MyClass
时才会自动连接。@acdcjunior-嘿,我编辑了这个问题,创建服务时的问题是什么?因为我在呼叫新服务??有
服务
注释为
@Service
?因为如果是,当您调用
new Service()
时,注释
@Service
将被完全忽略,并且
@Autowired
也将被忽略,因此任何用
@Autowired
注释的字段都将为空。
@Configuration
public ...

    // Constructor    
    service = new Service();

    // Field
    private Service service;