如题,直接上代码:
package com.xiaonei.action;
import java.util.HashMap;
import java.util.Map;
import org.apache.struts2.interceptor.RequestAware;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.xiaonei.domain.University;
import com.xiaonei.domain.Users;
import com.xiaonei.domain.Useruniversity;
import com.xiaonei.form.UserForm;
import com.xiaonei.service.serviceInter.CountryServiceInter;
import com.xiaonei.service.serviceInter.ProvinceServiceInter;
import com.xiaonei.service.serviceInter.UniversityServiceInter;
import com.xiaonei.service.serviceInter.UserServiceInter;
import com.xiaonei.service.serviceInter.UseruniversityServiceInter;
import antlr.collections.List;
public class RegisterAction extends ActionSupport implements RequestAware,ModelDriven {
private static final long serialVersionUID = 1L;
Map<String, Object> request = new HashMap<String, Object>();
@Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}
private CountryServiceInter countryService;
private ProvinceServiceInter provinceService;
private UniversityServiceInter universityService;
private UserServiceInter userService;
private UseruniversityServiceInter useruniversityService;
public CountryServiceInter getCountryService() {
return countryService;
}
public UserServiceInter getUserService() {
return userService;
}
public void setUserService(UserServiceInter userService) {
this.userService = userService;
}
public UseruniversityServiceInter getUseruniversityService() {
return useruniversityService;
}
public void setUseruniversityService(UseruniversityServiceInter useruniversityService) {
this.useruniversityService = useruniversityService;
}
public Map<String, Object> getRequest() {
return request;
}
public void setCountryService(CountryServiceInter countryService) {
this.countryService = countryService;
}
public ProvinceServiceInter getProvinceService() {
return provinceService;
}
public void setProvinceService(ProvinceServiceInter provinceService) {
this.provinceService = provinceService;
}
public UniversityServiceInter getUniversityService() {
return universityService;
}
public void setUniversityService(UniversityServiceInter universityService) {
universityService = this.universityService;
}
//转到注册页面之前要准备的数据
public String readyData(){
//准备数据,供用户选择大学
System.out.println(universityService);
System.out.println(countryService);
System.out.println(provinceService);
System.out.println(userService);
System.out.println(useruniversityService);
//显示默认国家的大学
//request.put("universityList", universityService.hashCode());
//System.out.println(universityService.findById(null, null));
//国家
//List list = (List) universityService.getResult("from University",null);
//大学名字(默认显示北京的大学)
request.put("countryList", countryService.getResult("from Country", null));
//省和直辖市的信息(默认中国)
request.put("provinceList", provinceService.getResult("from Province where country.id=?", new Object[]{ new Integer(1)} ));
return "dataIsReady";
}
universityService,countryService ,provinceService,userService
useruniversityService这些属性对应实体类都配置了相应的bean来实现ioc,可是
输出到控制台的结果是:
null
com.xiaonei.service.serviceImpl.CountryServiceImpl@309d74
com.xiaonei.service.serviceImpl.ProvinceServiceImpl@f3bb35
com.xiaonei.service.serviceImpl.UserServiceImpl@1561f65
com.xiaonei.service.serviceImpl.UseruniversityServiceImpl@84d61a
第一个为空,就是universityService对应的类没有被配置到spring的ioc容器中
而其他的都被配置到了容器中,想了很久看了好几遍配置文件都搞不懂为什么,求大神指教!
UniversityServiceImpl类:
package com.xiaonei.service.serviceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.xiaonei.service.baseService.BaseServiceImpl;
import com.xiaonei.service.serviceInter.UniversityServiceInter;
@Transactional
public class UniversityServiceImpl extends BaseServiceImpl implements UniversityServiceInter {
}
UniversityServiceInter接口类:
package com.xiaonei.service.serviceInter;
import com.xiaonei.service.baseService.BaseService;
public interface UniversityServiceInter extends BaseService{
}
BaseServiceImpl类:
package com.xiaonei.service.baseService;
import java.io.Serializable;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
public abstract class BaseServiceImpl implements BaseService {
@Resource
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
/**
- @author sunlong
- @param hql:传入的hql,可以带参数?
-
@param args: 问号对应的参数数组
*/
@Transactional
public List<?> getResult(String hql, Object[] args) {
System.out.println(hql);
Session session= sessionFactory.getCurrentSession();
System.out.println(session);
Query query = session.createQuery(hql);
System.out.println(query);
if(args!= null && args.length > 0){
for(int i = 0;i<args.length;i++){
query.setParameter(i, args[i]);
}
}
return query.list();
}@Override
public void save(Object obj) {
// TODO Auto-generated method stub
sessionFactory.openSession().save(obj);}
@Override
public void delete(Object obj) {
// TODO Auto-generated method stub}
@Override
public void update(Object obj) {
// TODO Auto-generated method stub}
@Override
public Object findById(Class<?> clazz, Serializable id) {
// TODO Auto-generated method stub
System.out.println("test");
return this.getSessionFactory().getCurrentSession().load(clazz, id);
}
}
BaseService接口类:
package com.xiaonei.service.baseService;
import java.io.Serializable;
import java.util.List;
public interface BaseService {
//通过一个hql,和传入的参数完成相应的查询任务
public List<?> getResult(String hql,Object [] args );
//保存一个对象
public void save(Object obj);
//删除一个对象
public void delete(Object obj);
//更新一个对象
public void update(Object obj);
//根据id返回一个对象
public Object findById(Class<?> clazz,Serializable id);
}