【发布时间】:2016-09-17 12:30:01
【问题描述】:
我对 spring 有点陌生,我遇到了空指针异常。
我相信 @Autowired 在我的 MongoRepository 上不起作用。
出于某种原因,当我尝试一些示例时,它正在工作。 (运行函数中注释掉的代码有效)
这是我得到的错误:
2016-05-20 02:31:20.877 错误 6272 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] :Servlet.service() for 带有路径 [] 的上下文中的 servlet [dispatcherServlet] 引发异常 [请求处理失败;嵌套异常是 java.lang.NullPointerException] 的根本原因
java.lang.NullPointerException: null at com.applesauce.service.CustomerService.addCustomer(CustomerService.java:24) ~[classes/:na]
你们可以看看并指导我吗? 另外,如果我在最佳实践方面做错了什么,请告诉我。 如果您需要更多信息,请询问!
com.applesauce.controller
@RestController
@RequestMapping("/customer")
public class CustomerController {
private CustomerService customerService = new CustomerService();
@RequestMapping(value = "/addcustomer", method = RequestMethod.GET)
public Customer addCustomer(@RequestParam("firstName") String fName,
@RequestParam("lastName") String lName,
@RequestParam("email") String email,
@RequestParam("phoneNumber") String phoneNumber,
@RequestParam("source") String source){
return customerService.addCustomer(new Customer(fName,lName,email,phoneNumber,source));
}
}
com.applesauce.repository
@Repository
public interface CustomerRepository extends MongoRepository<Customer, String> {
public Customer findByFirstName(String firstName);
public List<Customer> findByLastName(String lastName);
}
com.applesauce.service
@EnableMongoRepositories(basePackages = "com.applesauce.repository")
public class CustomerService {
@Autowired
private CustomerRepository repository;
public Customer addCustomer(Customer customer){
repository.save(customer);
return customer;
}
}
【问题讨论】:
-
你的
CustomerService不是打算成为 Spring@Service吗?改为注释而不是手动创建它,使用@Autowired。顺便说一句,您应该从问题中删除所有不相关的代码,其中还包括所有被注释的行。 -
感谢您的提示。我删除了一些代码。你能解释一下“改为注释而不是手动创建它,使用@Autowired。”这部分多一点?我不明白。
标签: java spring mongodb repository mongorepository