2016-05-20 14 views
0

私は少し春に新しく、私はNull Pointer Exceptionを実行しています。 @Autowiredは私のMongoRepositoryで動作していないと思います。 何らかの理由で、いくつかの例を試したところ、うまくいきました。 (実行機能でコメントアウトコードが働いていた)春のブートMongoRepositoryヌルポインタ例外

これは私が取得エラーです:

2016年5月20日02:31:20.877 ERROR 6272 --- [NIO-8080-exec- 2] oaccC [。[/ [。] [dispatcherServlet]: のServlet.service()パス[]のコンテキスト内のサーブレット[dispatcherServlet]例外をスローしました [要求の処理に失敗しました。ネストされた例外は、根本的な原因で のjava.lang.NullPointerException]で

のjava.lang.NullPointerException: com.applesauce.service.CustomerService.addCustomer(CustomerService.java:24)のヌル 〜[クラス/:NA]

あなたは見て私を指示できますか? また、ベストプラクティスに間違っているかどうか教えてください。 これ以上の情報が必要な場合は、お問い合わせください!

@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 com.applesauce.controller

@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; 
} 
} 
+1

あなたの 'CustomerS春の '@サービス'を意図していた?代わりに注釈をつけ、手動で作成しないで '@ Autowired'を使用してください。ちなみに、関連していないすべてのコードを質問から削除してください。コメントにはすべての行も含まれています。 –

+0

チップをありがとう。私はいくつかのコードを削除しました。 「代わりに注釈を付け、手動で作成しないで、@Autowiredを使用してください」と説明できますか?この部分はもう少しですか?わかりません。 –

答えて

1

エクストリームバイカーあなたが@Serviceを追加する必要があることを意味お客様のCustomerServiceの注釈:

@EnableMongoRepositories(basePackages = "com.applesauce.repository") 
@Service 
public class CustomerService { 
... 
} 

また、new演算子を使用してサービスを作成したい場合は、Springがそれを気にすると思っても構いません。あなたのCustomerControllerでは、変更の初期化ライン:

private CustomerService customerService = new CustomerService(); 

には:

@Autowired 
private CustomerService customerService; 

これは、NullPointerExceptionが解決しなければなりません。

+0

皆さん、それを解決してくれてありがとう! –

0

私は同じ問題を持っていたし、私はこの方法で解決(説明は一般的なもの)

Repository.class

@Repository 
public interface {...} 

Service.class

public class {...} 
@Autowired 
private Repository repo; 

Application.class

@Autowired Service service; 
service.method() //does not throws NullPointerException