Spring 注入Bean时为null

来源:这里教程网 时间:2026-03-01 12:02:50 作者:

Spring.xml <util:properties id="db" location="classpath:jdbc.properties"/> <context:component-scan base-package="com.xms" /> <mvc:annotation-driven /> <!-- 声明DataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="#{db.driver}" /> <property name="url" value="#{db.url}" /> <property name="username" value="#{db.user}"/> <property name="password" value="#{db.password}"/> </bean> <!-- 导入SpringJDBC --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!-- 引入数据源 --> <!--  <property name="dataSource" ref="dataSource"></property> --> <constructor-arg> <ref bean="dataSource"/> </constructor-arg> </bean> <!-- 实例化dao和service接口 --> <bean id="loginDao" class="com.xms.dao.LoginDaoImpl"> <!-- 注入Spring的jdbcTemplate --> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean> <bean id="loginService" class="com.xms.service.loginServiceImpl"> <property name="loginDao" ref="loginDao"></property> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/xmscode?useUnicode=true&characterEncoding=utf8 user=root password=1234 controller: @Controller @RequestMapping("login") public class LoginController { private LoginService loginService; public LoginService getLoginService() { return loginService; } public void setLoginService(LoginService loginService) { this.loginService = loginService; } @RequestMapping("tologin") public String toLogin(){ return "login"; } @RequestMapping("login") public String login(User user, HttpServletRequest request) throws Exception{ //该行报错   loginService为null                 User u = loginService.checkInfo(user); HttpSession session = request.getSession(); session.setAttribute("nickname", u.getNickname()); return "index"; } } dao接口: public interface LoginDao { //根据email查找User public User findUserByEmail(User user) throws Exception; } daoImpl: @Repository public class LoginDaoImpl implements LoginDao { private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public User findUserByEmail(User user) throws Exception { User u = null; String sql = "select * from xc_user where email=?"; Object[] params = new Object[]{user.getEmail()}; u = jdbcTemplate.queryForObject(sql, (RowMapper<User>) new User(), params); return u; } } service接口: @Service public interface LoginService { public User checkInfo(User user) throws Exception; } service实现类: @Service public class loginServiceImpl implements LoginService{ private LoginDao loginDao; public LoginDao getLoginDao() { return loginDao; } public void setLoginDao(LoginDao loginDao) { this.loginDao = loginDao; } public User checkInfo(User user) throws Exception{ System.out.println("loginDao"+loginDao); User u = null; u = loginDao.findUserByEmail(user); if(u==null){ //用户名错误 throw new EmailErrorException("用户名错误"); }else if(!u.getPassword().equals(user.getPassword())){ //密码错误 throw new PasswordErrorException("密码错误"); }else{ //用户名和密码正确 return u; } } }

相关推荐