Estou estudando o spring 2.5.6 e tentando rodar a aplicação abaixo. O seguinte problema está ocorrendo:
This the problem:
javax.servlet.ServletException: Error creating bean with name ‘usuarioController’: Injection of resource fields failed; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named ‘usuarioDao’ must be of type [br.jus.jfrj.sigaFrancop.daoImpJpa.UsuarioDaoCrudImpJpa], but was actually of type [$Proxy73]
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
Meu applicationContext.xml :
<?xml version=“1.0” encoding=“UTF-8”?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<property name="database" value="ORACLE" />
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9iDialect
</prop>
</props>
</property>
<!-- Modo Lazy / permite instrumentação de classe
<property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver"></bean>
</property>
-->
</bean>
<bean id="jpaDialect"
class="org.springframework.orm.jpa.vendor.HibernateJpaDialect">
</bean>
<!-- Configura fonte de dados em pool utilizando dbcp-->
<bean id="myDataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@mclaren:1521:mcl" />
<property name="username" value="francopdes" />
<property name="password" value="francopdes" />
<property name="initialSize" value="5"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
<property name="jpaDialect" ref="jpaDialect"></property>
</bean>
<context:annotation-config />
<context:component-scan
base-package="br.jus.jfrj.sigaFrancop.controller" />
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="usuarioDao"
class="br.jus.jfrj.sigaFrancop.daoImpJpa.UsuarioDaoCrudImpJpa" >
</bean>
</beans>
Meu web.xml :
<?xml version=“1.0” encoding=“UTF-8”?>
<web-app id=“WebApp_ID” version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>
<display-name>SigaFrancop</display-name>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Ativa os escopos web para os beans no Spring -->
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<filter>
<filter-name>openEntityManager</filter-name>
<filter-class>
org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>openEntityManager</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<!-- Define o skin para o Richfaces -->
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>emeraldTown</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<security-constraint>
<display-name>
Bloqueia o browser da acessar arquivos xhtml
</display-name>
<web-resource-collection>
<web-resource-name>xhtml files</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint />
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>
Meu faces-config.xml
<?xml version=“1.0” encoding=“UTF-8”?>
<faces-config version=“1.2” xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd”>
<application>
Spring com JSF -->
<el-resolver>
org.springframework.web.jsf.el.SpringBeanFacesELResolver
</el-resolver>
</application>
<managed-bean>
<managed-bean-name>usuarioController</managed-bean-name>
<managed-bean-class>
br.jus.jfrj.sigaFrancop.controller.UsuarioController
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
.........
</faces-config>
Minha classe UsuarioController
package br.jus.jfrj.sigaFrancop.controller;
import javax.annotation.Resource;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import br.jus.jfrj.sestm.dao.DaoException;
import br.jus.jfrj.sigaFrancop.daoImpJpa.UsuarioDaoCrudImpJpa;
import br.jus.jfrj.sigaFrancop.model.Usuario;
@Controller(“usuarioController”)
@Scope(“session”)
public class UsuarioController {
private Usuario usuario;
private DataModel model;
@Resource
private UsuarioDaoCrudImpJpa usuarioDao;
public UsuarioController() {
}
public UsuarioDaoCrudImpJpa getUsuarioDao() {
return usuarioDao;
}
public void setUsuarioDao(UsuarioDaoCrudImpJpa usuarioDao) {
this.usuarioDao = usuarioDao;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public DataModel getModel() {
return model;
}
public void setModel(DataModel model) {
this.model = model;
}
public String novoUsuario() {
this.usuario = new Usuario();
return "formUsuario";
}
}
Na página eu clico no botão (<h:commandButton action="#{usuarioController.novoUsuario}" value=“New Usuario” />) e neste problema ocorre o erro.
Desculpe-me pelo tamanho da mensagem, mas estou realmente precisando de ajuda.
Obrigado.