Erro na integração do Spring com VRaptor FJ-28 [Resolvido]

Boa tarde!

Estou seguindo a apostila FJ-28, estou com problemas na integração com Spring, as libraries já estão certas acho, mas tem algum problema na injeção de dependências da classe CarrinhoController. Eu fiz o que está na apostila, vou postar aqui os códigos e a exceção.

@Resource
public class CarrinhoController {

	private final Carrinho carrinho;
	private final ProdutoDao dao;
	private final Result result;

	public CarrinhoController(Carrinho carrinho, ProdutoDao dao, Result result) {
		this.carrinho = carrinho;
		this.dao = dao;
		this.result = result;
	}

	@Get("/carrinho")
	public void visualiza() {

	}

	@Delete("/carrinho/{indiceItem}")
	public void remove(int indiceItem) {
		carrinho.remove(indiceItem);
		result.redirectTo(this).visualiza();
	}

	@Post("/carrinho")
	public void adiciona(Item item) {
		dao.recarrega(item.getProduto());
		carrinho.adiciona(item);

		result.redirectTo(ProdutosController.class).lista();
	}
}
public interface ProdutoDao {

	public abstract void recarrega(Produto produto);

	@Transactional
	public abstract void salva(Produto produto);

	@Transactional
	public abstract void atualiza(Produto produto);

	public abstract Produto carrega(Long id);

	@Transactional
	public abstract void remove(Produto produto);

	public abstract List<Produto> listaTudo();

	public abstract List<Produto> busca(String nome);

}
@Component
public class HibernateProdutoDao implements ProdutoDao {
	private final Session session;

	public HibernateProdutoDao(Session session) {
		this.session = session;
		System.out.println("Construtor ProdutoDao");
	}

	@Override
	public void recarrega(Produto produto) {
		session.refresh(produto);
	}

	@Override
	@Transactional
	public void salva(Produto produto) {
		// Transaction tx = session.beginTransaction();
		session.save(produto);
		// tx.commit();
	}

	@Override
	@Transactional
	public void atualiza(Produto produto) {
		Transaction tx = session.beginTransaction();
		if (produto != null) {
			session.update(produto);
		} else {
			System.out.println("O produto não existe!");
		}

		tx.commit();
	}

	@Override
	public Produto carrega(Long id) {
		return (Produto) session.get(Produto.class, id);
	}

	@Override
	@Transactional
	public void remove(Produto produto) {
		// Transaction tx = session.beginTransaction();
		if (produto != null) {
			session.delete(produto);
		} else {
			System.out.println("O produto não existe!");
		}
		// tx.commit();
	}

	@Override
	public List<Produto> listaTudo() {
		return this.session.createCriteria(Produto.class).list();
	}

	@Override
	public List<Produto> busca(String nome) {
		return session.createCriteria(Produto.class).add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE)).list();
	}
}

Exception:

SEVERE: Servlet.service() for servlet [default] in context with path [/goodbuy] threw exception
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'carrinhoController': Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.caelum.goodbuy.dao.ProdutoDao]: : No matching bean of type [br.com.caelum.goodbuy.dao.ProdutoDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.caelum.goodbuy.dao.ProdutoDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329)
	at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083)
	at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:93)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.caelum.goodbuy.dao.ProdutoDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)
	... 46 more

Alguém sabe o que está ocorrendo?

Vc importou o @Component do VRaptor?

Olá Lucas, você que é o ninja do VRaptor, importei sim!

No matching bean of type [br.com.caelum.goodbuy.dao.ProdutoDao]

isso significa que vc pediu um ProdutoDao, mas não tem nenhuma implementação registrada.

você tem mais de uma interface/classe ProdutoDao?
HibernateProdutoDao tá na pasta src ou tá dentro de um jar?

Lucas, no projeto existe apenas uma interface com o nome ProdutoDao, HibernateDao está dentro da pasta “br.com.caelum.goodbuy.dao”, tentei colocar a anotação @Component na interface ProdutoDao, mudei o construtor da classe CarrinhoController, mexi muito nas libs, o problema estava lá anteriormente mas acho que agora é algo com injeção de dependências.

Eu segui o ‘Capítulo 16 Apêndice - Integrando VRaptor e Spring’ exatamente como está na apostila, não estou localizando o erro.

Coloque esse arquivo na sua pasta src/main/resources ou src/:

mudando o nível do log do VRaptor de INFO pra DEBUG, e poste aqui o resultado da inicialização e da requisição pro controller problemático.

Boa tarde Lucas!

Exception

Mai 10, 2014 2:11:55 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre7\bin;C:\windows\Sun\Java\bin;C:\windows\system32;C:\windows;C:/Program Files/Java/jdk1.7.0_17/bin/../jre/bin/server;C:/Program Files/Java/jdk1.7.0_17/bin/../jre/bin;C:/Program Files/Java/jdk1.7.0_17/bin/../jre/lib/amd64;;C:\Program Files\Java\jdk1.7.0_17\bin;C:\windows\system32;C:\windows;C:\windows\System32\Wbem;C:\windows\System32\WindowsPowerShell\v1.0\;C:\Users\Rafael Chinelato\Downloads\eclipse-jee-juno-SR2-win32-x86_64\eclipse;;.
Mai 10, 2014 2:11:55 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:goodbuy' did not find a matching property.
Mai 10, 2014 2:11:56 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Mai 10, 2014 2:11:56 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
Mai 10, 2014 2:11:56 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1336 ms
Mai 10, 2014 2:11:56 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Mai 10, 2014 2:11:56 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.39
Mai 10, 2014 2:11:57 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Workspaces\workspace_Caelum\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\goodbuy\WEB-INF\lib\javax.el-api-2.2.4.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Workspaces/workspace_Caelum/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/goodbuy/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Workspaces/workspace_Caelum/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/goodbuy/WEB-INF/lib/weld-servlet-1.1.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
14:12:01,014  INFO [BasicConfiguration  ] Using class br.com.caelum.vraptor.ioc.spring.SpringProvider as Container Provider
14:12:01,066  INFO [DefaultSpringLocator] Using an XmlWebApplicationContext, searching for applicationContext.xml
14:12:01,186  INFO [BasicConfiguration  ] br.com.caelum.vraptor.scanning = null
14:12:01,187  INFO [WebAppBootstrapFactory] Dynamic WebAppBootstrap found.
14:12:01,643  INFO [XmlWebApplicationContext] Refreshing Root WebApplicationContext: startup date [Sat May 10 14:12:01 BRT 2014]; root of context hierarchy
14:12:01,802  INFO [XmlBeanDefinitionReader] Loading XML bean definitions from class path resource [applicationContext.xml]
14:12:02,516  INFO [DefaultListableBeanFactory] Overriding bean definition for bean 'org.springframework.context.annotation.internalAutowiredAnnotationProcessor': replacing [Root bean: class [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null] with [Root bean: class [br.com.caelum.vraptor.ioc.spring.InjectionBeanPostProcessor]; scope=; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null]
14:12:02,919  INFO [InjectionBeanPostProcessor] JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
14:12:03,135  INFO [DefaultListableBeanFactory] Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@807f8e: defining beans [org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,transactionManager,sessionFactory,defaultConverters,paranamerNameProvider,defaultStaticContentHandler,defaultResourceNotFoundHandler,defaultMethodNotAllowedHandler,XStreamConverters.NullConverter,pathAnnotationRoutesParser,validatorCreator,defaultAcceptHeaderToFormat,defaultTypeNameExtractor,javassistProxifier,hibernateProxyInitializer,noRoutesConfiguration,defaultRestDefaults,encodingHandlerFactory,defaultRouter,defaultTypeFinder,objenesisInstanceCreator,javaEvaluator,defaultInterceptorHandlerFactory,defaultDeserializers,methodValidatorFactoryCreator,defaultRoutes,defaultResourceTranslator,topologicalSortedInterceptorRegistry,defaultMultipartConfig,messageInterpolatorFactory,DIConstraintValidatorFactory,stereotypeHandler,converterHandler,interceptorStereotypeHandler,deserializesHandler,stereotypedBeansRegistrar,defaultSpringLocator,XStreamXMLSerialization,flashInterceptor,XStreamJSONSerialization,defaultFormatResolver,sessionFlashScope,ognlFacade,defaultExceptionMapper,deserializingInterceptor,emptyResult,defaultHttpResult,executeMethodInterceptor,jsonDeserializer,methodValidatorInterceptor,forwardToDefaultViewInterceptor,replicatorOutjector,ognlParametersProvider,defaultRefererResult,outjectResult,emptyElementsRemoval,defaultRestHeadersHandler,exceptionHandlerInterceptor,defaultStatus,instantiateInterceptor,HTMLSerialization,defaultServletFileUploadCreator,defaultLogicResult,XStreamConverters,applicationConfiguration,defaultBeanValidator,defaultRepresentationResult,XStreamJSONPSerialization,defaultValidator,jstlLocalization,i18nMessageSerialization,formDeserializer,commonsUploadMultipartInterceptor,defaultPathResolver,downloadInterceptor,defaultPageResult,messageConverter,defaultMethodInfo,parametersInstantiatorInterceptor,XStreamXMLDeserializer,resourceLookupInterceptor,defaultValidationViewsFactory,defaultResult,localTimeConverter,characterConverter,bigDecimalConverter,uploadedFileConverter,localDateTimeConverter,integerConverter,primitiveBooleanConverter,dateTimeConverter,primitiveShortConverter,enumConverter,stringConverter,dateMidnightConverter,bigIntegerConverter,primitiveIntConverter,localeBasedCalendarConverter,byteConverter,primitiveByteConverter,primitiveFloatConverter,primitiveCharConverter,doubleConverter,shortConverter,primitiveLongConverter,booleanConverter,primitiveDoubleConverter,localeBasedDateConverter,floatConverter,longConverter,localDateConverter,VRaptorRequestProvider,httpServletRequestProvider,httpServletResponseProvider,httpSessionProvider,defaultInterceptorStack,XStreamBuilderImpl,enhancedRequestExecution,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,usuariosController,produtoDao,mundo,carrinho,testeDependencia,imagensController,usuarioWeb,carrinhoController,usuarioDao,autenticacaoInterceptor,produtosController,imagens,criadorDeSession]; root of factory hierarchy
log4j:WARN No appenders could be found for logger (org.hibernate.type.BasicTypeRegistry).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
14:12:04,740  INFO [AnnotationSessionFactoryBean] Building new Hibernate SessionFactory
14:12:05,873  INFO [DefaultConverters   ] Registering bundled converters
14:12:05,934  INFO [LinkToHandler       ] Registering linkTo component
14:12:06,172  INFO [DefaultRouteBuilder ] /usuarios/login                                   [POST] -> UsuariosController.login(Usuario)
14:12:06,173  INFO [DefaultRouteBuilder ] /logout                                           [ALL] -> UsuariosController.logout()
14:12:06,174  INFO [DefaultRouteBuilder ] /usuarios/adiciona                                [ALL] -> UsuariosController.adiciona(Usuario)
14:12:06,175  INFO [DefaultRouteBuilder ] /usuarios/login                                   [GET] -> UsuariosController.loginForm()
14:12:06,176  INFO [DefaultRouteBuilder ] /usuarios/novo                                    [ALL] -> UsuariosController.novo()
14:12:06,177  INFO [DefaultRouteBuilder ] /mundo/paises                                     [ALL] -> Mundo.paises()
14:12:06,178  INFO [DefaultRouteBuilder ] /mundo/boasVindas                                 [ALL] -> Mundo.boasVindas()
14:12:06,178  INFO [DefaultRouteBuilder ] /mundo/retornaNumero                              [ALL] -> Mundo.retornaNumero()
14:12:06,183  INFO [DefaultRouteBuilder ] /produtos/{produto.id}/imagem                     [POST] -> ImagensController.upload(Produto, UploadedFile)
14:12:06,185  INFO [DefaultRouteBuilder ] /produtos/{produto.id}/imagem                     [GET] -> ImagensController.download(Produto)
14:12:06,188  INFO [DefaultRouteBuilder ] /carrinho/{indiceItem}                            [DELETE] -> CarrinhoController.remove(int)
14:12:06,190  INFO [DefaultRouteBuilder ] /carrinho                                         [POST] -> CarrinhoController.adiciona(Item)
14:12:06,191  INFO [DefaultRouteBuilder ] /carrinho                                         [GET] -> CarrinhoController.visualiza()
14:12:06,195  INFO [DefaultRouteBuilder ] /produtos/{id}                                    [DELETE] -> ProdutosController.remove(Long)
14:12:06,196  INFO [DefaultRouteBuilder ] /produtos/{id}                                    [GET] -> ProdutosController.edita(Long)
14:12:06,198  INFO [DefaultRouteBuilder ] /produtos                                         [POST] -> ProdutosController.adiciona(Produto)
14:12:06,199  INFO [DefaultRouteBuilder ] /produtos/novo                                    [GET] -> ProdutosController.formulario()
14:12:06,201  INFO [DefaultRouteBuilder ] /produtos/{produto.id}                            [PUT] -> ProdutosController.altera(Produto)
14:12:06,202  INFO [DefaultRouteBuilder ] /produtos                                         [GET] -> ProdutosController.lista()
14:12:06,203  INFO [DefaultRouteBuilder ] /produtos/busca                                   [ALL] -> ProdutosController.busca(String)
14:12:06,204  INFO [DefaultRouteBuilder ] /produtos/busca.json                              [GET] -> ProdutosController.buscaJson(String)
14:12:06,205  INFO [DefaultRouteBuilder ] /produtos/validaProduto                           [ALL] -> ProdutosController.validaProduto(Produto)
14:12:06,224  INFO [VRaptor             ] VRaptor 3.5.3 successfuly initialized
Mai 10, 2014 2:12:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Mai 10, 2014 2:12:06 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Mai 10, 2014 2:12:06 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 9933 ms
Construtor CriadorDeSession
getInstance Session
Construtor ProdutoDao
Mai 10, 2014 2:39:25 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [default] in context with path [/goodbuy] threw exception
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'carrinhoController': Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.caelum.goodbuy.dao.ProdutoDao]: : Error creating bean with name 'produtoDao': Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.caelum.goodbuy.dao.ProdutoDao]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDao': Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.caelum.goodbuy.dao.ProdutoDao]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329)
	at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263)
	at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083)
	at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:93)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:99)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDao': Initialization of bean failed; nested exception is org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.caelum.goodbuy.dao.ProdutoDao]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329)
	at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)
	... 48 more
Caused by: org.springframework.aop.framework.AopConfigException: Could not generate CGLIB subclass of class [class br.com.caelum.goodbuy.dao.ProdutoDao]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
	at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:212)
	at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:112)
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.createProxy(AbstractAutoProxyCreator.java:476)
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:362)
	at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1426)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
	... 58 more
Caused by: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given
	at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:721)
	at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:499)
	at net.sf.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33)
	at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
	at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
	at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
	at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
	at org.springframework.aop.framework.Cglib2AopProxy.getProxy(Cglib2AopProxy.java:200)
	... 65 more

Lucas, acabei descobrindo o erro, verifiquei a exception com mais cuidado e segui sua dica que vi em outro post, que era pra ver sempre o último Caused By da Exception, e descobri que faltavam sim alguns jars, adicionei os jars:

spring-aop-3.0.5.RELEASE.jar
asm-3.3.1.jar
cglib-2.2.jar
spring-tx-3.0.5.RELEASE.jar

E outros jars também, mas o importante, é que o problema está resolvido agora, muito obrigado pela ajuda!