@SpringBean
только внедряет зависимости в классы, которые наследуются от Wicket Component
.@Autowired
только внедряет зависимости в классы, созданные самой Spring.Это означает, что вы не можете автоматически внедрить зависимость в объект, который вы создаете с помощью new
.
(Изменить: вы также можете добавить @SpringBean
инъекцию в ваш класс, вставив в конструктор: InjectorHolder.getInjector().inject(this);
)
Мой обычный обходной путь для этого - использовать мой класс приложения для помощи.(Я немного озадачен тем, что вы используете new Application(...)
. Я предполагаю, что на самом деле это не org.apache.wicket.Application
.) Например:
public class MyApplication extends AuthenticatedWebApplication implements
ApplicationContextAware {
private ApplicationContext ctx;
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.ctx = applicationContext;
}
public static MyApplication get() {
return (MyApplication) WebApplication.get();
}
public static Object getSpringBean(String bean) {
return get().ctx.getBean(bean);
}
public static <T> T getSpringBean(Class<T> bean) {
return get().ctx.getBean(bean);
}
....
}
В моем контексте приложения Spring:
<!-- Set up wicket application -->
<bean id="wicketApplication" class="uk.co.humboldt.Project.MyApplication"/>
Мой вспомогательный объект затем ищет сервис по запросу:
public class HelperObject {
private Service getService() {
return MyApplication.getSpringBean(Service.class);
}