- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 applicationContext 初始化在 Spring 3.2.1 上运行良好。
但是当我升级到 4.0.9 而没有更改任何代码或 bean 定义时),初始化卡住了。以下声明不断发生。虽然没有明显的循环引用。
Requested bean is currently in creation: Is there an unresolvable circular reference?
我继续调查。我故意删除了一个 bean 定义。
这是不断发生的日志语句。
[factory.support.DefaultListableBeanFactory.getTypeForFactoryBean()] - Ignoring bean creation exception on FactoryBean type check:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'someSeedBean-which-is-different-in-every-instance-of-this-log' defined in the class path resource ........ ;
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'someDataSource' is defined
有什么变化?任何想法都会有所帮助。
在 Spring 3.x 和 4.x 中都有效的 Bean 定义
<bean id="abstractDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" abstract="true" scope="singleton">
<property ....>
</bean>
<bean id="someDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close" scope="singleton" parent="abstractDataSource">
<property name="driverClass" .... />
</bean>
<bean id="someSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource"> <ref bean="someDataSource" /> </property>
<property name="packagesToScan"> <list>......</list> </property>
....
在 Spring 3.x 中有效但在 4.0.9 中无效的 Bean 定义。
@Configuration
public class SomeSpringConfiguration{
// Moving this beanDef to Java for features not available in XML
@Bean(destroyMethod = "close")
public DataSource someDataSource() { // also tried setting this to ComboPooledDataSource
// verified that this beanDefinition is recognized by Spring
// but this bean is never created / this method is never executed
...
return datasource;
}
}
<bean class="SomeSpringConfiguration" />
<bean id="someSessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource"> <ref bean="someDataSource" /> </property>
<property name="packagesToScan"> <list>......</list> </property>
....
</bean>
我在 Spring 4.0.9 中遇到的错误是
Cannot resolve reference to bean 'someSessionFactory' while setting constructor argument;
nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException:
Error creating bean with name 'someSessionFactory':
Requested bean is currently in creation: Is there an unresolvable circular reference?
请注意,该应用程序在/通过 xml、@Component 和@Configuration 中定义了数千个 bean。我不得不将 bean 从 xml 移动到 @Configuration 类以执行复杂的 bean 构建过程。
--------------------更新
我发现了问题:“大量 MethodInvokingFactoryBean[MIB] 用法”。出于某种原因,Spring 4 在大量 MIB 的存在下变得困惑。完全相同的代码库适用于 Spring 3。我将各种 MIB 执行的所有逻辑迁移到 ApplicationListener。请注意,ApplicationListener 并不是 MIB 的预期替代品,但在我的例子中,我可以在监听器中重现逻辑,因为 MIB 只是将 Spring bean 静态注入(inject)到不受 Spring 管理的类中。它不仅解决了这个问题,而且将 Spring 启动时间从大约 300 秒减少到大约 200 秒。
不幸的是,我既无法找出 Spring 中的根本原因,也无法在较小的代码库中重现该问题(在此分享)。
最佳答案
删除
<bean class="SomeSpringConfiguration" />
从 XML 中,它已经用 @Configuration
注释。如果正在对其进行扫描,则其中的 bean 可能会被创建两次。您应该将所有内容移至 Javaconfig。
关于spring - 为什么 Spring 4.0.9 applicationContext 初始化会卡住,而 3.2.1 不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471592/
我想在遗留应用程序中使用 Spring。 核心部分是一个类,我们称之为LegacyPlugin,它代表应用程序中的一种可插入部分。问题是这个类也是数据库连接器,并且用于创建许多其他对象,通常通过构造函
我有 3 个应用上下文: 负责启动 Jetty servlet 容器的全局上下文,从 main() 启动 jetty 中每个 webapp 的 applicationContext 父级(由 Spri
我通过以下代码在应用程序上下文中设置 applicationContext-dao.xml 和 applicationContext-service.xml。 proj
我正在尝试使用 Spring 运行 JUnit 测试,但控制台显示: 无法加载 ApplicationContext 错误。我正在使用 Maven 结构,并且在 src/main/resources
我的applicationContext.xml,webmvc-config.xml在WEB-INF/spring/applicationContext.xml 当我尝试以下操作时,它没有加载,我得到
我正在尝试从 WCSession 获取最新数据我不明白为什么即使我刚刚收到 didReceiveApplicationContext称呼。 更多细节可以直接在代码中获得: //Watch Code o
我正在尝试运行 mvn integration-test阶段,我得到 Failed to load ApplicationContext执行集成测试时出错(单元测试正确执行)。我正在使用 Spring
我在创建测试类时遇到问题。基本上我想测试执行网络调用的 View 模型类。使用 dagger 注入(inject)类网络组件需要上下文参数来检查连接,这是我的 View 模型: class MyVie
我有一个带有 Spring 插件的 struts2 Web 项目。 applicationContext.xml 位于 /WEB-INF/applicationContext.xml 我如何在我的类(
我在一个名为 Controller 的全局类中声明的全局变量有一个小问题,该全局类是从应用程序扩展的。 当我启动 Activity A 时,我在 Controller 中有一个包含 0 个项目的数组列
当我运行我的 spring 集成 junit 类时,我遇到了异常。 这是我的类(class) @RunWith(SpringJUnit4ClassRunner.class) @ContextConfi
我是 java EE spring boot 的新手,我想我会开始一个小项目来掌握一些东西,我目前遇到如上所述的错误 failed to load ApplicationContext 我是不知道为什
我只能在 Spring (3.0.5) jdbc 应用程序(在 Oracle 11.2 上运行)中获取 Activity 的编程事务,当txAdvice指向从应用程序上下文调用的实际方法(mainTe
在servet类中,可以通过这种方式获取spring ApplicationContext ApplicationContext ctx = WebApplicationContextUtils.ge
抱歉,如果我的术语不正确,我是 C# 的新手。我正在尝试使用 ApplicationContext 文件来存储 mysql conn 值,如 dbname、用户名、密码。带有 mysql conn 字
我正在尝试在所有 ContextXXXEvent 上使用 ContextEventListener我为每种事件类型创建了一个监听器,如下所示(ContextRefreshedEvent 是一个示例):
我的应用程序有一个 application-context.xml。现在我将 ApplicationContext 实例化为: ApplicationContext context = new Cla
我正在开发一个 spring 3 web 服务应用程序,我正在尝试从我的 servlett.xml 文件加载 ApplicationContext 以用于一个简单的测试用例,但它不起作用。 Appli
在我的应用程序完成后,我想关闭 spring 上下文。 相关代码有一个 ApplicationContext 引用,但我找不到 close 方法。 最佳答案 贬低你的ApplicationContex
我在尝试为 kotlin 多平台自定义上下文时遇到了这个问题 Actual typealias 'ApplicationContext' has no corresponding expected d
我是一名优秀的程序员,十分优秀!