Spring DI использует устаревшие объекты, которые не могут быть beanified - PullRequest
1 голос
/ 15 марта 2012

Я хочу перевести следующую конфигурацию DI на основе Guice в DI на основе Spring Java-config.

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));

К сожалению, Spring AnnotationConfigApplicationContext принимает класс конфигурации, а не объект, поэтому я не уверен, как внедрить объект User в его конфигурацию.

1 Ответ

2 голосов
/ 15 марта 2012

Отдельный @Configuration класс для изоляции «нестандартного» объекта?

@Configuration
public class ConfigA {
    public @Bean User getUser () {
        // Here do whatever it takes to create/lookup the user
        return new User();
    }
}
...