spring中自动连线bean为null的原因
我遇到了一个问题,在运行时,某个类中的自动连接bean都是空的。我想要一个答案,它将涵盖为什么spring自动连线bean没有初始化的所有可能性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
- 只使用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;