1
Я хочу перевести следующую конфигурацию DI на основе Guice в Spring, основанный на Java.Spring DI с использованием устаревших объектов, которые не могут быть обработаны
public class UserModule extends AbstractModule {
private final User user;
public UserModule(User user) {
this.user = user;
}
@Override
protected void configure() {
// don't need to do any configuration
}
@Provides @Singleton
User provideUser() {
return user;
}
@Provides @Singleton @Inject
UserStorageService provideUserStorageService(User u) {
return new UserStorageServiceImpl(u);
}
}
Предполагается использовать затем
Injector userOneInjector = Guice.createInjector(new UserModule(userOne));
Injector userTwoInjector = Guice.createInjector(new UserModule(userTwo));
К сожалению, AnnotationConfigApplicationContext Spring занимает в классе конфигурации, а не объект, поэтому я не знаю, как вводить объект пользователя в его конфигурации.
Но создание/поиск CannotBeBeanified требует использования объектов, которые ограничены вне конфигураций. С Guice я могу передать их как конструктор args, пытаясь понять, как это сделать с Spring. Что делать, если конструктор CannotBeBeanified использовал String или File, который был доступен только во время выполнения, например? – Jacob
Как вы относитесь к области вне конфигурации? –
Извините, я думаю, что мой комментарий не был хорошо написан. Я обновил пример в вопросе, надеюсь, его более ясно? В новом примере я не хочу создавать новых пользователей, я хочу использовать объекты, к которым у меня уже есть ссылка, но я не вижу, как это сделать без использования синглета. – Jacob