Можно ли автоматически связать зависимости, созданные вне ApplicationContext? - PullRequest
0 голосов
/ 06 августа 2011

У меня есть приложение, которое использует JAXRS для сопоставления ресурсов Restlet с использованием аннотаций.Однако единственная точка входа, которую я имею, - это определение списка классов ресурсов в конфигурации приложения.Эти классы создаются в Restlet или JAXRS, поэтому у меня нет возможности поместить их в мой ApplicationContext.Есть ли способ заставить Spring сканировать путь к классам и автоматически связывать новые экземпляры по мере необходимости?Я уже пытался использовать что-то вроде ниже:

@Autowired
private SessionFactory sessionFactory;

К сожалению, это на самом деле не работает.Есть ли способ сделать то, о чем я здесь говорю?

Ответы [ 2 ]

4 голосов
/ 06 августа 2011

Вы можете использовать AspectJ для зависимости, чтобы внедрить ваши bean-компоненты, созданные вне вашего контроля, или если вы создаете объекты, используя new. Вы можете прочитать больше о документации Springs: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-using-aspectj

По сути, вы добавите аннотацию @Configurable к классу, который вы хотите использовать в качестве цели для внедрения. Вы также должны включить его в Spring, имея в своем Spring XML. Наконец, вы должны выбрать между ткачеством во время компиляции или во время выполнения. Снова вы можете получить помощь из весенней документации.

Время ткачества: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/aop.html#aop-aj-ltw

Если вы используете maven, вы можете проверить этот вопрос Stackoverflow для настройки времени компиляции AspectJ: Почему не работает AspectJ во время компиляции работы Spring @Configurable?

4 голосов
/ 06 августа 2011

ApplicationContext.getAutowireCapableBeanFactory().autowireBean(object) внедрит все зависимости в объект.

...