gpt4 book ai didi

java - UserDao 为空,我连接的 bean 错误,需要帮助

转载 作者:行者123 更新时间:2023-11-30 05:11:18 25 4
gpt4 key购买 nike

我的 homecontroller 有一个 UserService 对象,该对象使用 spring 正确连接(它使用没有 UserService 的方法很好地呈现索引页)。

现在我设置了 hibernate,因此在 UserService 内部我有一个 UserDao 对象,我正在尝试使用 spring 连接它。

@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 那样为每个 Dao 定义一个 bean 吗? sessionFactory 会以某种方式连接吗?

最佳答案

添加@AutoWired userDao 的注释。

@Service
public class UserServiceImpl implements UserService{

@AutoWired
UserDao userDao;

...
}

并确保您已设置 <context:component-scan/>扫描您的 @Service 的包和 @Controller已加入。

关于java - UserDao 为空,我连接的 bean 错误,需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3274292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com