My app-config.xml has a definition for my UserDao bean:
<bean id="userDao" class="com.blah.core.db.hibernate.UserDaoImpl"> <property name="sessionFactory" ref="sessionFactory"/> </bean>
I have a component scan:
<context:component-scan base-package="com.blah" />
My index action in my HomeController works great (it outputs the contents of the method in my UserService to the freemarker template).
@Controller public class HomeController { @Autowired private UserService userService; @RequestMapping("/") public ModelAndView Index() { ModelAndView mav = new ModelAndView(); mav.setViewName("index"); mav.addObject("message", userService.sayHello()); mav.addObject("username", userService.getTestUser()); return mav; }
"getTestUser ()" is a new method that references UserDao, it looks like this:
@Service public class UserServiceImpl implements UserService{ @Autowired UserDao userDao; public String sayHello() { return "hello from user service impl part 2"; } public String getTestUser() { return userDao.getById(1L).getUsername(); } }
I get an error message:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: com.blah.core.db.hibernate.UserDao com.blah.core.services.UserServiceImpl.userDao; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.blah.core.db.hibernate.UserDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
- What could be the problem?
- If I did not autowire, what would I do instead of adding @AutoWire to the definition of UserDao.
java spring spring-mvc hibernate
Blankman
source share