Мой homecontroller сделал, чтобы UserService возразил, что это соединено проводом с помощью пружины правильно (он представляет индексную страницу очень хорошо с помощью метода никакой UserService).
Теперь я устанавливаю, в спящем режиме, так в UserService я сделал, чтобы UserDao возразил, что я пытаюсь соединить пружину использования проводом.
@Service
public class UserServiceImpl implements UserService{
UserDao userDao;
public String sayHello() {
return "hello from user service impl part 2";
}
public String getTestUser() {
return userDao.getById(1L).getUsername();
}
}
Таким образом, мой HomeController называл 'sayHello' метод, и он хорошо работал как, я сказал.
@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());
//userService.getTestUser();
return mav;
}
Вызов к userService.getTestUser () сбои, поскольку UserDao является пустым.
Мой app-config.xml:
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--<property name="packagesToScan" value="com.blah.core.db.hibernate"/> -->
<property name="configLocation" value="/WEB-INF/classes/hibernate.cfg.xml"/>
<property name="hibernateProperties">
<value>
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.connection.url=jdbc:mysql://localhost/blah
hibernate.connection.username=dbuser
hibernate.connection.password=123
hibernate.query.substitutions=true 'Y', false 'N'
hibernate.cache.use_query_cache=true
hibernate.cache.use_second_level_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.jdbc.batch_size=0
</value>
</property>
</bean>
<!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->
<bean id="userDao" class="com.blah.core.db.hibernate.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
Почему мой UserDao является пустым? Я должен делать что-то не так с проводным соединением?
Кроме того, если я некомментирую name=packagesToScan строку, я должен действительно определить боб для каждого Дао как, я сделал с UserDao? sessionFactory будет соединен проводом так или иначе?
Добавить аннотацию @AutoWired
к userDao.
@Service
public class UserServiceImpl implements UserService{
@AutoWired
UserDao userDao;
...
}
И убедитесь, что вы настроили
для сканирования пакетов, которые используются вашими @Service
и @Controller
. дюйм
Как упоминалось Кроком, ваш UserDao неправильно "подключен" к вашему UserService. Вы даже пробовали его предложение?