我在spring服务中遇到DAO问题,DAO没有正确实例化。 这是我的DAO,DAOImp,Service和ServiceImp以及beans.xml文件
package com.dao;
import java.util.List;
import com.dto.ProductDTO;
public interface ProductDAO {
public List<ProductDTO> getAllProducts();
}
package com.dao.implementations;
import java.util.ArrayList;
import java.util.List;
import com.dao.ProductDAO;
import com.dto.ProductDTO;
public class ProductDAOImp implements ProductDAO{
@Override
public List<ProductDTO> getAllProducts() {
List<ProductDTO> liste = new ArrayList<ProductDTO>();
liste.add(new ProductDTO(1,"pc", 100));
liste.add(new ProductDTO(2,"disk", 11));
return liste;
}
}
package com.webservices;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.dto.ProductDTO;
@Path("products")
public interface ProductWebService {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("all")
public List<ProductDTO> getAllProducts();
}
Web服务实施:
package com.webservices.implementations;
import java.util.List;
import com.dao.implementations.ProductDAOImp;
import com.dto.ProductDTO;
import com.webservices.ProductWebService;
public class ProductWebServiceImp implements ProductWebService {
private ProductDAOImp productDAO;
@Override
public List<ProductDTO> getAllProducts() {
return productDAO.getAllProducts();
}
public ProductDAOImp getProductDAO() {
return productDAO;
}
public void setProductDAO(ProductDAOImp productDAO) {
this.productDAO = productDAO;
}
}
beans.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<jaxrs:server id="productWebService"
serviceClass="com.webservices.implementations.ProductWebServiceImp"
name="productWebService" address="/productServices" />
<bean id="productService"
class="com.webservices.implementations.ProductWebServiceImp">
<property name="productDAO" ref="productDAO"></property>
</bean>
<bean id="productDAO" class="com.dao.implementations.ProductDAOImp"/>
</beans>
问题是当在服务中调用getAllProducts()方法时抛出nullpointer异常(属性dao为null)
我的代码有什么问题吗? 谢谢你的帮助
答案 0 :(得分:0)
嗨,这是一个对我有用的解决方案:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<context:component-scan base-package="com.webservices.implementations" />
<context:annotation-config />
<jaxrs:server id="productWebService" name="productWebService"
address="/productServices">
<jaxrs:serviceBeans>
<ref bean="productService"/>
</jaxrs:serviceBeans>
</jaxrs:server>
<bean id="productService" class="com.webservices.implementations.ProductWebServiceImp">
<property name="productDAO" ref="productDAO"/>
</bean>
<bean id="productDAO" class="com.dao.implementations.ProductDAOImp" />
感谢所有参与者
最好的问候
答案 1 :(得分:-2)
您可以尝试在Dao上的ProductWebServiceImp中添加@Autowired注释。