que interfaz grafica grabfocus focuslistener evento ejemplo java exception spring-mvc

java - interfaz - No se pudo autoconectar el campo en primavera. ¿por qué?



interfaz grafica en java netbeans (7)

Sigo recibiendo este error, y no puedo entender por qué ... sí, sé que muchas personas tenían problemas similares, pero leer las respuestas que obtuvieron no resuelve mi problema.

org.springframework.beans.factory.BeanCreationException: Error al crear bean con el nombre ''contactController'': la inyección de las dependencias de autocable falló; la excepción anidada es org.springframework.beans.factory.BeanCreationException: no se pudo autoconectar el campo: private net.service.ContactService net.controller.ContactController.contactService; la excepción anidada es org.springframework.beans.factory.NoSuchBeanDefinitionException: no se ha encontrado ningún bean de tipo [net.service.ContactService] para la dependencia: se espera al menos 1 bean que califique como candidato de autowire para esta dependencia. Anotaciones de dependencia: {@ org.springframework.beans.factory.annotation.Autowired (required = true)}

aquí está el controlador:

@Controller @SessionAttributes public class ContactController { @Autowired private ContactService contactService; //methods... }

el ContactServiceImpl

@Service("contactService") @Transactional(propagation = Propagation.SUPPORTS, readOnly = true) public class ContactServiceImpl implements ContactService { @Autowired private ContactDao contactDao; public ContactServiceImpl() { } @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) public void addContact(Contact contact) { contactDao.saveContact(contact); } @Override public List<Contact> getContacts() { return contactDao.getAllContacts(); } }

el ContactDaoImpl

@Repository("contactDao") public class ContactDaoImpl implements ContactDao { @Autowired private SessionFactory sessionFactory; @Override public void saveContact(Contact contact) { sessionFactory.getCurrentSession().saveOrUpdate(contact); } @Override @SuppressWarnings("unchecked") public List<Contact> getAllContacts() { return (List<Contact>) sessionFactory.getCurrentSession().createQuery("from contact c").list(); } }

y el servlet de primavera.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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:property-placeholder location="classpath:jdbc.properties" /> <context:component-scan base-package="net.controller" /> <tx:annotation-driven transaction-manager="hibernateTransactionManager" /> <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${database.driver}" /> <property name="url" value="${database.url}" /> <property name="username" value="${database.user}" /> <property name="password" value="${database.password}" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="annotatedClasses"> <list> <value>net.form.Contact</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> </props> </property> </bean> <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </beans>


Bueno, hay un problema con la creación del bean ContactServiceImpl . En primer lugar, asegúrese de que la clase se instancia realmente depurando el constructor no-args cuando se inicia el contexto Spring y cuando se crea una instancia de ContactController .

Si el ContactServiceImpl es instanciado por el contexto Spring, pero simplemente no coincide con su anotación @Autowire , intente ser más explícito en su inyección de anotación. Aquí hay un tipo que lidia con un problema similar al tuyo y ofrece algunas soluciones posibles:

http://blogs.sourceallies.com/2011/08/spring-injection-with-resource-and-autowired/

Si me preguntas, creo que estarás bien si reemplazas

@Autowired private ContactService contactService;

con:

@Resource @Qualifier("contactService") private ContactService contactService;


Cuando obtiene este error, falta una anotación. Me faltaba la anotación @service en el servicio. Cuando agregué esa anotación funcionó bien para mí.


En java config, asegúrese de haber importado su configuración en RootConfig como este @Import (PersistenceJPAConfig.class)


En spring servlet .xml:

<context:component-scan base-package="net.controller" />

(Supuse que el servicio impl está en el mismo paquete que la interfaz de servicio "net.service")

Creo que tienes que agregar el paquete net.service (o toda la red) al escaneo de componentes. Actualmente, la primavera solo busca en net.controller para componentes y como su servicio impl está en net.service, no se creará una instancia para la primavera.


Estaba obteniendo el mismo error y buscarlo me llevó hasta aquí. Mi solución parecía ser simplemente agregar la anotación @Component a la implementación del servicio abstracto.

En este caso, se vería así:

import org.springframework.stereotype.Component; ... @Component public class ContactServiceImpl implements ContactService {


He enfrentado el mismo problema hoy. Resultó ser que olvidé mencionar la anotación de @ Service / @ Component para mi archivo de implementación del servicio, para el cual la primavera no puede conectarse automáticamente y no crear el bean.


Tuve exactamente el mismo problema intente poner las dos clases en el mismo paquete y agregar una línea en el pom.xml

<dependency> <groupId> org.springframework.boot </groupId> <artifactId> spring-boot-starter-web </artifactId> <version> 1.2.0.RELEASE </version> </dependency>