【发布时间】:2017-07-03 12:24:43
【问题描述】:
我正在尝试使用服务和存储库将通过 rest 控制器发送的用户数据保存到数据库。
控制器
@RestController
@RequestMapping(path="/users")
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@RequestMapping(method= RequestMethod.POST, path="/create" )
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public void createUser(@RequestBody @Validated UserDto userDto ){
userService.createUser(userDto.getUsername(), userDto.getEmail(), userDto.getPassword());
}
}
服务
@Service
public class UserService {
private UserRepository userRepository;
private BCryptPasswordEncoder encoder;
@Autowired
public UserService(UserRepository userRepository){
this.userRepository = userRepository;
}
public void createUser(String username, String email,String password){
userRepository.save(new User(username, email, encoder.encode(password))); //line 25
}
public Optional<User> getByUsername(String username){
return userRepository.findByusername(username);
}
}
存储库
@Repository
public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findByusername(String username);
}
我正在向 http://localhost:8080/users/create 网址发送一个 POST 请求,其中包含以下数据
{
"username": "testusername",
"password": "password123",
"passwordRepeat": "password123",
"email": "asd@gm.com",
"emailRepeat": "asd@gm.com"
}
这是我这样做时遇到的异常,
java.lang.NullPointerException: null
at com.mportal.ec.services.UserService.createUser(UserService.java:25)
at com.mportal.ec.web.UserController.createUser(UserController.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
我不知道这里的原因。请帮忙。
【问题讨论】:
-
private UserService userService 使其自动连接
-
我认为你的“编码器”没有初始化,所以自动装配它
-
@DeedarAliBrohi 服务已经自动连接。问题出在编码器上。
-
@P.J.Meisch 我非常不同意,因为这个异常与 Spring 有关
-
@Harshakj89 不是真的,你没有初始化它,简单的调试就会发现。你使用 spring 在这里并不重要。
标签: java spring spring-boot repository