Беспорядок в инъекциях Spring Dependency - PullRequest
0 голосов
/ 06 февраля 2011

Я новичок в Spring DI и впервые использую DI в своем веб-приложении. кажется, что я делаю что-то не так, и это связано с тем, как я использую Spring scope. Вот моя проблема у меня есть серьезный класс, где я вводю различные другие объекты для достижения желаемой функциональности вот мои весенние записи в файле

<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" вызывается только один раз, когда вызывается сервер, и все последующие вызовы возвращают ту же ссылку, где я хочу новый экземпляр для каждого запроса. вот мой метод лицемерия

public static ImportServiceImpl getInstance(){
    return new ImportServiceImpl();
}

я знаю, что делаю основы неправильно в DI, но не уверен, где он находится. Я использую Struts2 для MVC и для сервисного уровня, используя Spring DI любая помощь в этом отношении будет полезна

Спасибо Umesh

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Я не уверен, что понимаю ваш вопрос, но звучит так, как будто вы должны попросить Spring вставить ссылку на Foo в ваш AdapterImpl и сделать его область «запрос». Если вам нужен Spring для управления созданием объекта, не вызывайте «new».

0 голосов
/ 06 февраля 2011

Я думаю, вам нужно посмотреть на

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-scopes

и посмотрите на таблицу 3.3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...