Spring 注入Bean时为null
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;
}
}
}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341