2016-12-22 19 views
0

依存性注入(@Autowire)によってDAOオブジェクトを作成したいのですが残念ながら、このDAOオブジェクトは決して作成されないため、Nullpointerがスローされます。@Autowireを使用する場合のNullpointer

これは私のDAOの実装です:

package com.sample.dao.service; 

    @Component 
    public class OrderServiceImpl implements OrderService { 

     private final OrderRepository orderRepository; 

     @Autowired 
     OrderServiceImpl(OrderRepository orderRepository) { 
      this.orderRepository = orderRepository; 
     } 
     @Override 
     public void save(Order order) { 
      return orderRepository.save(order); 
     } 

にNullPointerが生じているクラス:

package com.sample.dispatcher; 

@Component 
public class OrderDispatcher { 

private final OrderServiceImpl orderServiceImpl; 

@Autowired 
public OrderDispatcher(OrderServiceImpl orderServiceImpl) { 
     this.orderServiceImpl = orderServiceImpl; 
     } 

public void createOrder(Order order) { 
     orderServiceImpl.save(order)); // --> Nullpointer 

マイエントリークラス:

package com.sample; 

@SpringBootApplication 
@ComponentScan(basePackages = { "com.sample" , "com.webservice"}) 
@EnableJpaRepositories(basePackages = "com.sample.dao.repository") 
public class Application { 

    public static void main(final String[] args) { 
      SpringApplication.run(Application.class, args); 
+0

OrderDispatcherは、OrderRepositoryに依存するOrderServiceImplおよびOrde​​rServiceImplに依存します。 OrderRepositoryが適切に初期化されているか確認してください。 –

答えて

0

私はあなたがあなたのコンストラクタを変更すべきだと思います具体的な実装ではなく、インタフェースの引数型を持つこと。したがって、このような何か -

@Component 
public class OrderDispatcher { 

private final OrderService orderServiceImpl; 

@Autowired 
public OrderDispatcher(OrderService orderServiceImpl) { 
     this.orderServiceImpl = orderServiceImpl; 
     } 

あなたはOrderServiceImplバネ上@Component表記を追加し、そのクラスのプロキシを作成し、それがインタフェースによってautowiredすることができます。

関連する問題