我正在使用PARTLY迁移到春天的一些第三方罐子。痛点在于有很多初始化模块可以迁移到spring。初始化模块需要在批量创建bean之前首先执行。
我也读过Spring 3 bean instantiation sequence,这里的问题是,第三部分库使用@Component来创建bean(这取决于未迁移到spring的初始化模块,有线连接......?)。
现在我可以编写一个spring bean来包装所有初始化模块。并在需要它的bean之前创建bean。
那么有没有办法指定bean创建序列来首先创建初始化bean?
另外我检查了一些文档,spring bean创建在单线程中,所以这可以工作。
答案 0 :(得分:1)
您可以使用BeanPostProcessor并将您的initizaling模块添加为依赖项
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
<bean class="com.foo.CustomBeanPostProcessor" depends-on="com.foo.InitModuleBean"/>
<bean class="com.foo.BarBean" />
<bean id="com.foo.InitModuleBean" class="com.foo.InitModuleBean" />
</beans>
答案 1 :(得分:0)
你将初始化的wraperBean作为xmlConfig文件中的第一个Bean,然后spring将通过初始化Wraper来处理初始化另一个解决方案是将depends-on
属性添加到依赖于该Wrapper和你的所有bean中在像{/ p>这样的属性depends-on
中指定该包装bean的id
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="modules" class="com.mycompany.ModulesWrapper" />
<bean class="com.foo.ClientBean" depends-on="modules" />
</beans>