Я просмотрел много связанных тем и пробовал по-разному, но ошибка все еще существует. Окружающая среда: данные весны jpa, Hibernate, maven, tomcat7
Стек ошибок:
org.apache.catalina.core.StandardContext listenerStart SEVERE: Исключить отправку контекста инициализированное событие в экземпляр слушателя класса org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'userController': Инъекция автоуведомленных зависимостей не удалась; Вложенное исключение - org.springframework.beans.factory.BeanCreationException: Не удалось создать поле autwire: private com.zzz.service.UserService com.zzz.controller.UserController.userService; Вложенное исключение - это org.springframework.beans.factory.NoSuchBeanDefinitionException: никакой квалификационный компонент типа [com.zzz.service.UserService], найденный для зависимости: ожидается как минимум 1 компонент, который квалифицируется как кандидат на автоподключение для этой зависимости. Аннотации зависимостей: {@org.springframework.beans.factory.annotation.Autowired(required = true)} at...
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" ... ... >
<context:component-scan base-package="com.zzz">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/zzz" />
<property name="username" value="root" />
<property name="password" value="root" />
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan" value="com.zzz.entity" />
<property name="dataSource" ref="dataSource" />
<property name="jpaProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
<property name="persistenceProvider">
<bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
</property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<jpa:repositories base-package="com.zzz.repository" />
диспетчер-servlet.xml
<beans xmlns="http://www.springframework.org/schema/beans" ... ... >
<context:component-scan base-package="com.zzz.controller" />
<mvc:annotation-driven />
<mvc:resources mapping="/static/**" location="static/" />
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/defs/templates.xml</value>
</list>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>
</beans>
UserController.java
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/users")
public String users(Model model) {
model.addAttribute("users", userService.findAll());
return "users";
}
}
UserService.java
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public List<User> findAll() {
return userRepository.findAll();
}
}
UserRepository.java
public interface UserRepository extends JpaRepository<User, Integer> {
}
UDPATE 1
Имеются 2 ошибки,
Не удалось создать поле autwire: private com.zzz.repository.UserRepository com.zzz.service.UserService.userRepository
не удалось открыть поле autwire: private com.zzz.service.UserService com.zzz.controller.UserController.userService
ОБНОВЛЕНИЕ 2
Я попытался использовать servlet-dispatcher.xml в качестве единственного файла конфигурации (поместил в него содержимое applicationContext.xml), он отлично работает. Так что проблема между этими двумя файлами xml, но я не мог этого рассказать.
ОБНОВЛЕНИЕ 3
Я переименовал applicationContext.xml в root-context.xml и установил для него contextConfigLocation в web.xml, ошибка исчезла!
Кажется, что некоторая ошибка конфигурации в applicationContext.xml, кто-нибудь может помочь?
другое предположение: в диспетчере xml вы проверяете только пакет контроллера... так что если файл application.xml не загружен, он не сканирует пакет услуг и, следовательно, пользовательская служба не загружается... было бы интересно, что произойдет, если вы просматриваете весь пакет com.zzz в dispatcher.xml
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />