請教各位
在使用@Restcontroller function 下有使用jpa UserRepository.findAll()在啟動spring 時會出現錯誤,網上看了幾個例子大致也是這用法,請問原因為何還是哪邊有使用有誤在麻煩各位了謝謝
像這個樣子
@CrossOrigin
@RestController
public class UserController {
@Autowired
private UserRepository UserRepository;
private List<Users> user = findAll();
@RequestMapping(value = "/all", method = RequestMethod.POST)
private List<Users> findAll() {
List<Users> tempEmployees = new ArrayList<Users>();
tempEmployees = UserRepository.findAll();
return tempEmployees;
}
錯誤訊息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userController' defined in file
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1303) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1197) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
.........
Caused by: java.lang.NullPointerException: null
at com.lungsheng.system.controller.UserController.findAll(UserController.java:29) ~[classes/:na]
at com.lungsheng.system.controller.UserController.<init>(UserController.java:24) ~[classes/:na]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_181]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_181]
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:172) ~[spring-beans-5.1.6.RELEASE.jar:5.1.6.RELEASE]
... 19 common frames omitted
猜測是你的 UserRepository 沒有加 @Repository
Annotation
@Repository Annotation 有加上呢
@Autowired時我的UserRepository 好像沒順利取得值,值是null,問題不知道出在哪
@Repository
public interface UserRepository extends JpaRepository<Users, Long>{
Optional<Users> findByAccount(String account);
@Override
List<Users> findAll();
Users findByName(String name);
// Optional<Users> findByUsername(String username);
}
private List<Users> user = findAll();
這行拿掉試試看,因為這行的執行時間應該是在 UserRepository
被注入之前,所以呼叫 findAll()
方法時 UserRepository
還是 null。
確實是這樣執行時間上的問題,謝謝您