1

私は春に少し慣れていないので、Null Pointer Exception に遭遇しました。私@AutowiredのMongoRepositoryでは機​​能していないと思います。いくつかの例を試してみると、何らかの理由で機能していました。(run関数のコメントアウトされたコードは機能しました)

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

2016-05-20 02:31:20.877 ERROR 6272 --- [nio-8080-exec-2] oaccC[.[.[/].[dispatcherServlet] : サーブレット [dispatcherServlet] の Servlet.service() とのコンテキストでパス [] が例外をスローしました [リクエストの処理に失敗しました。ネストされた例外は根本原因を持つ 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;
}
}
4

3 に答える 3

4

Xtreme Biker は、次のように CustomerService に @Service アノテーションを追加する必要があることを意味しました。

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

また、Spring が処理することを期待する場合は、new 演算子を使用してサービスを作成したくありません。CustomerController で、初期化行を変更します。

private CustomerService customerService = new CustomerService();

に:

@Autowired
private CustomerService customerService;

NullPointerException を解決する必要があります。

于 2016-05-22T20:59:50.440 に答える
1

@Service アノテーションを持つクラスのオブジェクトを作成したことを確認します (new を使用)。リポジトリ Bean をオートワイヤーした場合、このクラスも代わりにオートワイヤーする必要があります。

于 2019-08-05T18:04:42.890 に答える