Я переместил свой код из конфигурации Spring Spring в конфигурацию Java. У меня все работает, но у меня есть вопрос о том, как я реализовал прототипы - в основном, в то время как то, что я делаю, это лучший способ сделать это? Каким-то образом это просто отключается!Spring Javaconfig и прототипированные бобы
я написал класс компонента таким образом:
@Component
@Scope("prototype")
public class ProtoBean {
...
}
Затем использовать компонент - это часть, что я просто не уверен, хотя он работает:
@Component
public class BeanUser implements ApplicationContextAware {
ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext context)throws BeansException
{
this.context = context;
}
public void getProtoBean() {
ProtoBean protoBean = context.getBean(ProtoBean.class);
}
}
Это дает мне прототипированный боб, и в модульных тестах я просто издевался над контекстом, называемым setApplicationContext с макетом, и имел вызов getBean из mock возвращать макет ProtoBean. Так что все хорошо.
Я сделал это в XML с помощью фабрики, но это, похоже, не слишком хорошо работает, так что это то место, где я закончил. Но есть ли способ сделать это без контекста? Или просто лучший способ?
Спасибо!
На данный момент вы не используете конфигурацию на основе Java. Посмотрите здесь http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-java – Bart
Это интересная ссылка - спасибо. Я использую @ComponentScan, чтобы выбрать это в моем java-конфигурационном классе, так что, похоже, это похоже на то же самое, и интересно, что это соответствует первому примеру, который они дают, как это сделать в вашей ссылке, - но затем они продолжаются говорить о «методе инъекции», который, по-видимому, является их предлагаемым решением. Спасибо! –