2017-07-11 18 views
-2

現在、SpringブートとSpringデータを使用して、最初のJava Webアプリケーションを作成しようとしています。 私はコントローラをすでに作成していますが、今はin-memory-databaseでDatasを作成しようとしています。Java Spring WebアプリケーションNullpointer

新しいユーザーを作成しようとすると、nullpointer例外が発生します。ユーザーはすべての値を設定しています。

POJO:

package db; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

@Entity 
public class User { 
@Id 
@GeneratedValue(strategy= GenerationType.AUTO) 
private Long id; 

private String userName; 

private String email; 

private String password; 

protected User() {} 

public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

public String getEmail() { 
    return email; 
} 

public void setEmail(String email) { 
    this.email = email; 
} 

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

}

DAO:

package db; 

import java.util.List; 

import org.springframework.data.repository.CrudRepository; 
import org.springframework.stereotype.Repository; 

@Repository 
public interface UserRepository extends CrudRepository<User, Long> { 

    List<User> findByUserName(String userName); 
} 

サービス:

package db; 

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 


@Service 
public class UserService { 

    @Autowired 
    UserRepository repository; 

    private static final Logger log = LoggerFactory.getLogger(Application.class); 

    public User start() { 
     User user = new User(); 
     user.setEmail("[email protected]"); 
     user.setUserName("Ada"); 
     user.setPassword("Password"); 

     repository.save(user); 

     return user; 
    } 
} 

エラー()UserService.startを呼び出します。

2017-07-11 20:31:10.027 ERROR 7604 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause 

のjava.lang.NullPointerException:私のメインに依存repositoryUserServiceに注入されなかったNPEはライン
repository.save(user);

に育てられたように見えるヌル

+1

「@ Autowired」をUserRepositoryリポジトリに追加します。 – fg78nc

+0

あなたの 'User * Service *'に '@ Repository'を付けた' User * Repository * 'が入っているのはなぜですか? –

答えて

0

、とそれに注釈を付けます@Resourceまたは@Autowired。 UserRepositoryに

+0

お返事ありがとうございます。私は両方を試みましたが、私はまだ同じエラーメッセージを持っています。そして、本当にその行の誤りです。 – FlowOverStack

0

1.Add @Repositoryそれはスプリング

UserServiceの中
@Repository 
    public interface UserRepository extends CrudRepository<User, Long> { 

     List<User> findByUserName(String userName); 
    } 

2.Autowireリポジトリ

@Autowired 
UserRepository repository;` 

P.S.のコンポーネントスキャン機能によってピックアップされるように必要ではありませんが、UserServiceクラスの@Repository@Serviceに変更することをお勧めします。これは、このクラスの目的をよりよく反映しており、特定の例外をマップするためにSpringにも適用されます。

@Repository 
public class UserService { 
+0

こんにちは、あなたのメッセージをありがとう。あなたが提案したアノテーションを追加しました。残念ながら、まだ同じエラーがあります。また、Springデータの設定ファイルも必要ですか?はいの場合はどこで例を見つけることができますか? – FlowOverStack

+0

あなたはNPEを取得しているオブジェクトについて教えてください。 – fg78nc

+0

インラインで:repository.save(user); – FlowOverStack

関連する問題