我是新手,春天休息,我还在学习它。我通过客户端从我的rest api调用资源时遇到问题。
我的数据库中有一些数据,我使用spring来注入值并获得连接。
当我向客户提出GET请求时,我正在获得NPE。
以下是我的DAO课程
public interface CustomerDao {
public List<Customer> getCustomersDao();
}
DAOImpl
public class CustomerDaoImpl implements CustomerDao {
private JdbcTemplate template;
@Autowired
public void setTemplate(JdbcTemplate template) {
this.template = template;
}
public List<Customer> getCustomersDao() {
return template.query("SELECT * FROM books.customers", new RowMapper<Customer>() {
@Override
public Customer mapRow(ResultSet rs, int rownumber) throws SQLException {
Customer e = new Customer();
e.setId(rs.getString(1));
e.setName(rs.getString(2));
e.setAge(rs.getString(3));
return e;
}
});
}
服务类
public class CustomerService {
@Autowired
CustomerDao customersConnection;
public List<Customer> getAllCustomers() {
return new ArrayList<Customer>(customersConnection.getCustomersDao());
}
资源
@Path("/persons")
public class CustomerResource {
@Autowired
CustomerService customerService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Customer> getAllCustomers {
return customerService.getAllCustomers();
}
}
我的bean.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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="com.sumanth.customers" />
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="--:--://----/---" />
<property name="username" value="----" />
<property name="password" value="-----" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean>
<bean id="customerService" class="com.sumanth.customer.db.CustomerDaoImpl">
<property name="template" ref="jdbcTemplate"></property>
</bean>
</beans>
Web.xml中
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.sumanth.customer</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
错误:
Caused by: java.lang.NullPointerException
at com.sumanth.customer.resource.CustomerResource.getAllCustomers(CustomerResource.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
错误第23行:
return customerService.getAllCustomers();
我用@Autowired连接豆子。我知道我在接线时做错了可以请任何人帮帮我
谢谢
答案 0 :(得分:0)
我对web xml和我的bean.xml进行了一些修改
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/bean.xml</param-value>
</context-param>
修改了我的服务类
@Component annotation in my service class
我的bean.xml添加了下面的
<context:annotation-config />
我的Impl课程。我在课堂上添加了注释
@Repository("customerService")