package org.springframework.guice.annotation; import javax.inject.Provider; import org.springframework.beans.factory.FactoryBean; public class GuiceFactoryBean<T> implements FactoryBean<T> { private final Provider<T> provider; private final Class<T> beanType; public GuiceFactoryBean(Class<T> beanType, Provider<T> provider) { this.provider = provider; this.beanType = beanType; } @Override public T getObject() throws Exception { return (T) provider.get(); } @Override public Class<?> getObjectType() { return beanType; } @Override public boolean isSingleton() { return true; } }