我在业务类是这样配置的
<bean id="userService" class="com.service.imp.UserServiceImp">
<property name="userDAO" ref="userDAO" />
<property name="userValidator" ref="userValidator" />
</bean>
<bean id="userDAO" class="com.dao.imp.UserDAOImp">
<property name="sessionFactory" ref="sessionFactory" />
</bean><bean id="userValidator" class="com.valid.user.UserValid" />业务类的代码:
public class UserServiceImp implements IUserService {
private IUserDAO userDAO;
private MyValidator userValidator ; public IUserDAO getUserDAO() {
return userDAO;
} public void setUserDAO(IUserDAO userDAO) {
this.userDAO = userDAO;
} public MyValidator getUserValidator() {
return userValidator;
} public void setUserValidator(MyValidator userValidator) {
this.userValidator = userValidator;
}
//.........省略一些方法
public User getUserByName(String username) throws MyBusinessException {
User user = null;
try { //从数据库中得到用户实例
user = userDAO.getUserByName(username);
//对用户实例进行校验,如果校验结果不符合业务逻辑,则抛出异常
ValidResult validResutl = userValidator.validate(user);
if(validResutl.isError()){
throw new MyBusinessException(validResutl.getErrorMsg());
}
} catch (MyDAOException cre) {
throw new MyBusinessException(cre);
}
return user;
}}
但是当每次通过浏览器调用这个业务的时候总是报空指针异常,后来我把UserServiceImp 类的“private MyValidator userValidator ;”;改为private CreditValidator userValidator = new UserValid() ;就正常了,可知为何???
难道spring不认得我自己写的校验类?
<bean id="userService" class="com.service.imp.UserServiceImp">
<property name="userDAO" ref="userDAO" />
<property name="userValidator" ref="userValidator" />
</bean>
<bean id="userDAO" class="com.dao.imp.UserDAOImp">
<property name="sessionFactory" ref="sessionFactory" />
</bean><bean id="userValidator" class="com.valid.user.UserValid" />业务类的代码:
public class UserServiceImp implements IUserService {
private IUserDAO userDAO;
private MyValidator userValidator ; public IUserDAO getUserDAO() {
return userDAO;
} public void setUserDAO(IUserDAO userDAO) {
this.userDAO = userDAO;
} public MyValidator getUserValidator() {
return userValidator;
} public void setUserValidator(MyValidator userValidator) {
this.userValidator = userValidator;
}
//.........省略一些方法
public User getUserByName(String username) throws MyBusinessException {
User user = null;
try { //从数据库中得到用户实例
user = userDAO.getUserByName(username);
//对用户实例进行校验,如果校验结果不符合业务逻辑,则抛出异常
ValidResult validResutl = userValidator.validate(user);
if(validResutl.isError()){
throw new MyBusinessException(validResutl.getErrorMsg());
}
} catch (MyDAOException cre) {
throw new MyBusinessException(cre);
}
return user;
}}
但是当每次通过浏览器调用这个业务的时候总是报空指针异常,后来我把UserServiceImp 类的“private MyValidator userValidator ;”;改为private CreditValidator userValidator = new UserValid() ;就正常了,可知为何???
难道spring不认得我自己写的校验类?
这三者是什么关系?
辈分关系,应该类似这样:xml中配置的类或者接口<在java文件中声明变量的类型