当前位置: 首页 > 知识库问答 >
问题:

Spring自动装配失败,但应用程序启动

燕经国
2023-03-14

最近,我遇到了一种情况,即基于Spring的应用程序在访问类(A)中的自动连接字段时抛出“NullPointerApplication”。被自动连接的豆子也用于其他类(B和C)。这些类(B和C)在访问该bean时工作正常。

applicaton-context.xml:

<bean id="myBean" class="x.y.x.MyBean">
</bean>

<context:component-scan base-package="x.y.z" />


Class MyBean{
public void m(){
}
}

@Component    
Class A{

@Autowired
MyBean theBean;

public void methodA(){
  theBean.m();                       //Getting NPE
}

}

@Component
Class B{

@Autowired
MyBean theBean;

public void methodB(){
  theBean.m();                             // No NPEs, works fine
}

}

@Component
Class C{

@Autowired
MyBean theBean;

public void methodC(){
  theBean.m();                             // No NPEs, works fine
}

}

当我重新启动应用程序时,一切正常。如前所述,如果bean自动连接失败,则类bean创建应失败,应用程序不应启动。相反,应用程序运行良好(A类除外),并且找不到“无法自动连线”异常。所以我想知道这是否是一个罕见的随机情况,Spring自动布线会出现混乱???我想这是对的吗?这是Spring的已知问题吗?

共有1个答案

籍光熙
2023-03-14

你确定你的A班本身是在Spring的背景下吗?也许您的类 B 和 C 是自动扫描的,但不是类 A(不在组件扫描的基本包中)。

在这种情况下自动装配只是忽略,所以y

 类似资料:
  • “Spring-Boot-AutoConfigure”,版本:'2.4.1'

  • 我是spring的初学者,希望这样做示例项目…我有一个数据库,我想连接到它…我使用了像AutoWired和service这样的注释。但有个问题我解决不了 Controller包中的RegisterationController具有我要调用的服务: 第一个包中的DataManagement类: 第一包中的StudentAccountRepository: 第一包中得学生帐户..引用数据库中的表: M

  • > 出错原因:任务“:bootrun”执行失败。 进程'command'/library/java/javavirtualmachines/jdk1.8.0_60.jdk/contents/home/bin/java''以非零退出值1完成 发生异常:2015-08-23 01:37:57.989 WARN 6186---[main]ationConfigEmbeddedWebApplication

  • 我正在使用一个spring boot项目2年了,我只是试图让一个同事参与,但我不能让存储库在他的计算机上运行。因此,我已经删除了我的文件夹,并再次克隆了我自己的项目,我可以重现错误,但问题是我无法修复它。 spring boot版本:1.5.22.发布。有什么建议吗? 到目前为止我所做的: 使用maven-resources-plugin修复了所有依赖关系警告/错误 将以下参数添加到我的 试图排除

  • 当我启动Spring Boot应用程序时,我得到了: 2020-11-11 03:02:24.333警告20648--[main]ConfigServletWebServerApplicationContext:上下文初始化过程中遇到异常-取消刷新尝试:org.springframework.beans.factory.unsatisfiedDependencyException:创建名为“org

  • 问题内容: 我试图将spring boot + redis集成到我的应用程序中。 pom.xml中的相关设置如下所示, 应用主要如下 applicationContext.xml的内容如下, 我的服务代码如下 然后运行程序并得到以下异常, 似乎下面的代码出错了。 redisT为null,未按预期初始化。 我应该如何解决此问题? 非常感谢。 问题答案: 我的控制器代码确实犯了一个错误。我的原始控制器