Reflection + spring dependence injection

Я пытаюсь понять, могу ли я совместить отражение с введением зависимости от пружины следующим образом:

public interface ClientCommand {

    public void execute(...);

    public static enum Command {
        SomeCommand(SomeCommand.class);

        private Class<? extends ClientCommand> clazz;

        private Command(Class<? extends ClientCommand> clazz) {
            this.clazz = clazz;
        }

        public Class<? extends ClientCommand> getClazz() {
            return clazz;
        }

        public static ClientCommand getClientCommand(String name) {
            Command command = Enum.valueOf(Command.class, name);
            return command.getClazz().newInstance();
        }
    }
}

Это создаст экземпляр класса команды на основе имени, переданного в getClientCommand. Это пример класса, расширяющего ClientCommand:

public class LoginCommand implements ClientCommand {
    @Autowired
    private UserRepository userRepository;

    public void setUserRepository(@Qualifier("userRepository")UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void execute(...) {
        ...
    }
}

И репозиторий имеет вид:

@Repository("userRepository")
public class UserRepositoryImpl implements UserRepository {
    ....
}

Когда выполняется метод LoginCommand.execute(), то UserRepository равен нулю. Если я использую newInstance() для создания объекта, то будет ли пружина вообще заботиться о впрыске зависимостей? Больше, чем для практического использования, это понять, возможно ли теоретически заставить этот код работать. Заранее спасибо

5
задан Ae. 20 September 2011 в 22:44
поделиться