【发布时间】:2020-05-23 05:28:06
【问题描述】:
我正在使用 Spring Boot,在 Controller 中,我尝试使用 new 运算符创建一个对象,并尝试打印其工作的对象值。但是对于存储库,我使用了 @Autowired,但结果为 null
@RestController
public class SignupController {
//@Autowired
UserService userservice =new UserService() ;
@GetMapping("/Allusers")
public ResponseEntity<List<User>> allUsers() {
System.out.print(userservice+"\n");
List<User> userlist = userservice.getAllUsers();
if (userlist.isEmpty()) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<>(userlist, HttpStatus.OK);
}
这是我在其中自动连接“UserRepository userrepo;”的服务类
public class UserService {
@Autowired
UserRepository userrepo;
public List<User> getAllUsers() {
List<User> userlist = new ArrayList<User>();
System.out.println(userrepo);
userrepo.findAll().forEach(users -> userlist.add(users));
System.out.println("hii");
return userlist;
}
【问题讨论】:
-
在
UserService类中添加@Service并确保UserRepository有@Repository注释并重试 -
它已经存在于程序中,当我在控制器类中使用 @autowired 时它可以工作,但是当我使用 new 运算符创建对象时,它是 null
-
无需使用
new关键字创建对象,使用@Autowired是依赖注入的好方法 -
我正在弄清楚 @Autowired 和 new 运算符之间的区别
标签: java spring spring-boot annotations autowired