2016-07-11 9 views
2

なぜ私が取得しています春@Autowiredフィールド:Spring @Autowiredフィールドはnullですか?ヌルとして

Exception : 
    java.lang.NullPointerException 
     at com.elastic.controller.MainController.getUsers(MainController.java:38) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 

MainController.java

package com.elastic.controller; 

     @Component() 
     @Path("/user") 
     public class MainController { 


      @Autowired 
      private ElasticSearchRepository elasticSearchRepository; 

      @GET 
      @Path("/getAllUsers") 
      @Produces(MediaType.APPLICATION_JSON) 
      public Response getUsers() throws Exception{ 

       List<User> userlist =new ArrayList<User>(); 
       Iterator<User> users = elasticSearchRepository.getAllUsers(); 

       while (users.hasNext()) { 
        userlist.add(users.next()); 
       }  

       return Response.ok(userlist).build(); 

      } 

     } 

ElasticSearchRepository.java

package com.elastic.repository; 
@Configuration 
@EnableElasticsearchRepositories(basePackages = "com.elastic.repository") 
public class ElasticSearchRepository { 

public Iterator<User> getAllUsers() { 
    Iterator<User> users = userRepository.findAll().iterator(); 
    return users; 
} 

} 

コントローラの

MVC-ディスパッチャ-servlet.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:mvc="http://www.springframework.org/schema/mvc"  
        xmlns:context="http://www.springframework.org/schema/context" 
        xmlns:elasticsearch="http://www.springframework.org/schema/data/elasticsearch" 
        xsi:schemaLocation="http://www.springframework.org/schema/data/elasticsearch http://www.springframework.org/schema/data/elasticsearch/spring-elasticsearch-1.0.xsd 
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> 



       <context:annotation-config /> 

       <mvc:annotation-driven /> 
       <context:component-scan base-package="com.elastic" /> 
       <elasticsearch:repositories base-package="com.elastic.repository" /> 
       <elasticsearch:repositories base-package="com.elastic.entity" /> 


      </beans> 

私は@Component注釈を保持しているとリポジトリのために私は@Configurationを保ったが、それでも、この例外を取得しています。 Plsはこれを助ける。

+1

これはSpringコントローラではなく、Jerseyコントローラです。 Spring MVCまたはSpring-Jersey統合を使用します。 – chrylis

+0

どのようにそれを行うには? –

+1

リポジトリは '@ Repository'アノテーションを取得する必要があります – Apostolos

答えて

2

問題の記述に基づいて、私は2つの問題と解決策を見つけることができる午前は以下の通りです:

この

  1. を試してみてくださいElasticSearchRepository.java クラスにして@ComponentScan(basePackages = { "com.elastic" })

  2. を試してみてください
  3. @Component() MainController.javaクラスの@Controllerで名前を変更

0

これは、MainControllerを使用しているためです。メインコントローラが初期化されておらず、スプリングコンテキストでプロビジョニングされていない、つまりnewキーワードを使用してMainControllerのインスタンスを作成した場合。

第2に、ElasticSearchRepositoryのgetAllUsers()メソッドが表示されません。コードがどのようにコンパイルされるのでしょうか?

+0

私は間違ったメソッドfindAllUsersを投稿しました。それは今そこにある。その私の間違い –

関連する問題