我是Spring DI的新手,我在网络应用程序中第一次使用DI。 似乎我在做错了,它与我使用弹簧范围的方式有关。这是我的问题 我有一个严格的类,我正在注入各种其他对象,以实现所需的功能 这是我的春季文件条目
<bean id="ImportServiceImpl" class="ImportServiceImpl" factory-method="getInstance">
<property name="browseDirectory" ref="browseDirectoryImpl"/>
<property name="xmlUnmarshaller" ref="xmlUnmarshallerImpl"/>
<property name="Adaptar" ref="AdaptarImpl"/>
<property name="DAOService" ref="DAO"/>
</bean>
<bean id="browseDirectoryImpl" class="BrowseDirectoryImpl" factory-method="getInstance" />
<bean id="xmlUnmarshallerImpl" class="XMLUnmarshallerImpl"/>
<bean id="AdaptarImpl" class="AdaptarImpl" factory-method="getInstance"/>
现在在我的adaptarImpl类中,我对其他一些在构造函数中初始化的对象有所了解
private AdaptarImpl(){
foo=new Foo();
}
现在第一次当服务器启动并且这个服务第一次运行时,一切都很好foo正在被启动到其正确的初始化值但是对于所有其他后续调用Spring正在恢复对先前初始化的foo对象的依赖,我希望对于每个新请求,应创建一个新的foo实例。
我觉得在上面的代码factory-method="getInstance"
中使用了工厂方法
当被调用的服务器和所有其他后续的calles返回相同的refrence时,我只被调用一次,我希望每个请求都有一个新的实例。
这是我的魔法方法
public static ImportServiceImpl getInstance(){
return new ImportServiceImpl();
}
我知道我在DI中做了基本错误,但不确定它在哪里。我使用Struts2进行MVC,使用Spring DI进行服务层 这方面的任何帮助都会有所帮助
由于 Umesh制作
答案 0 :(得分:3)
我不确定我理解你的问题,但听起来你应该要求Spring将对Foo的引用注入到AdapterImpl并使其范围“请求”。如果您需要Spring来控制对象创建,请不要调用“new”。
答案 1 :(得分:0)