JAVA Spring:服务返回null

时间:2015-09-08 00:23:01

标签: java spring

出于某种原因,我的服务返回null。 autowires是正确的,服务注释在那里,getter和setter ..但是这返回一个null:

public PlatformService getPlatformService() {
    return platformService;
}

public void setPlatformService(PlatformService platformService) {
    this.platformService = platformService;
}

在Debug上,它返回platformService = null

这是我的PlatformService:

package empsuite.service;
    import java.util.List;
import empsuite.model.Platform;



public interface PlatformService {
    public void addPlatform(Platform platform);
    public void updatePlatform(Platform platform);
    public Platform getPlatformById(int id);
    public List<Platform> getPlatform();

}

PlatformServiceImpl:

@Service
@Transactional
public class PlatformServiceImpl implements PlatformService {
    @Autowired
    PlatformDAO platformDAO;

    @Transactional(readOnly = false)
    public void addPlatform(Platform platform) {
        getPlatformDAO().addPlatform(platform);
    }
    @Transactional(readOnly = false)
    public void updatePlatform(Platform platform) {
        getPlatformDAO().updatePlatform(platform);
    }


    private PlatformDAO getPlatformDAO() {
        return platformDAO; }

    public void setPlatformDAO(PlatformDAO platformDAO) {
        this.platformDAO = platformDAO;
    }

    public Platform getPlatformById(int id) {
        return getPlatformDAO().getPlatformById(id);
    }

    public List<Platform> getPlatform() {
        return getPlatformDAO().getPlatform();
    }
}

DAOImpl函数(使用sessionfactory自动装配),因为它是HQL的构建器:

public List<Platform> getPlatform() {
    List list = getSessionFactory().getCurrentSession().createQuery("from Platform").list();
    return list;
}

1 个答案:

答案 0 :(得分:0)

@ManagedProperty是问题的原因,所以我重写它并且它适用于这个构造函数:

public PlatformManagedBean() {
    super();
    if(platformService == null){
        WebApplicationContext ctx =  FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());
        platformService = ctx.getBean(PlatformService.class);
    }

}