Vraptor3 - Interceptor -> Erro de rota inválida

Olá pessoal,

Estou estudando pela apostila da Caelum e estou preso a uma parte, pois não consigo completar o exercício de interceptadores com o Vraptor.

O objetivo do exercício é interceptar uma requisição para verificar se o usuário está logado no sistema.

Tentei achar a solução na documentação do vraptor, porém não obtive sucesso.
Quero aprender mais sobre interceptadores, mas não acho um bom material.

Eis o código do controller:

@Controller
public class LoginController {
	private UserDAO dao;
	private UserLogado userLogado;
	private Result result;
	
	public LoginController(UserDAO dao, UserLogado userLogado, Result result){
		this.dao = dao;
		this.userLogado = userLogado;
		this.result = result;
	}
	
	public void autentica(User user){
		User autenticado = dao.buscaUsuarioPorLoginESenha(user);
		if(autenticado != null){
			userLogado.login(autenticado);
			result.redirectTo(ProdutoController.class).lista();
			return;
		}
		
		result.use(Results.logic()).redirectTo(LoginController.class).formLogin();
		
	}
	
	public void formLogin(){
	}

}

Eis o código do interceptador:

@Intercepts
public class LoginInterceptor implements Interceptor {
	private UserLogado userLogado;
	private Result result;
	
	public LoginInterceptor(UserLogado userLogado, Result result) {
		this.userLogado = userLogado;
		this.result = result;
	}
	
	public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
		if(userLogado.getUserLogado() != null) {
			stack.next(method, instance);
		} 
		else {
			try{
				result.use(Results.logic()).redirectTo(LoginController.class).formLogin();
			}
			catch(InterceptionException e){
				e.printStackTrace();
			}
				
		}
	}
	
	public boolean accepts(ResourceMethod method) {
		ResourceClass resource = method.getResource();
		return !resource.getType().isAssignableFrom(LoginController.class);
	}
}

Eis a exceção:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.http.route.RouteNotFoundException: The selected route is invalid for redirection: controller.LoginController.formLogin
	br.com.caelum.vraptor.http.route.DefaultRouter.urlFor(DefaultRouter.java:155)
	br.com.caelum.vraptor.view.DefaultLogicResult$2.intercept(DefaultLogicResult.java:116)
	br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:38)
	controller.LoginController$$EnhancerByCGLIB$$34e40d1f.formLogin(<generated>)
	intercept.LoginInterceptor.intercept(LoginInterceptor.java:30)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

Abraço a todos e agradeço desde já a colaboração dos membros

troca o @Controller por @Resource

Lucas, eu já havia tentado fazer isso e não tinha dado certo.

Por desencargo de consciência, tentei novamente e funcionou!
Ainda não entendi o que poderia ter dado errado na primeira tentativa.

Estou meio perdido nesse lance de interceptores. Eu entendi pra que servem, mas não entendo esses argumentos q ele recebe, entre outras coisas.
Poderia me indicar algum material para estudo?

Muitíssimo obrigado!

Do vraptor ou em geral?
http://vraptor.caelum.com.br/documentacao/interceptadores/

acho q teria q ser em geral, já que a documentação do vraptor não explica muitas coisas

tenta a apostila do vraptor http://www.caelum.com.br/curso/fj-28-vraptor-hibernate-ajax/

Na mosca bixão.
Obrigado mais uma vez