您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我应该永远不要在Spring Boot项目中使用'new'关键字吗?

我应该永远不要在Spring Boot项目中使用'new'关键字吗?

您可以在spring应用程序中使用new关键字创建对象。

但是这些对象将不在Spring Application Context的范围内,因此不受Spring管理。

由于这些不是spring管理的,因此将无法解析任何嵌套的依存关系级别(例如,您的Service类具有对Repository类的引用等)。

因此,如果尝试在服务类中调用方法,则最终可能会得到存储库的NullPointer。

@Service
public class GreetingService {
    @Autowired
    private GreetingRepository greetingRepository;
    public String greet(String userid) {
       return greetingRepository.greet(userid); 
    }
}

@RestController
public class GreetingController {
    @Autowired
    private GreetingService greetingService;
    @RequestMapping("/greeting")
    public String greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello %s", greetingService.greet(name));
    }
    @RequestMapping("/greeting2")
    public String greeting2(@RequestParam(value = "name", defaultValue = "World") String name) {
      GreetingService newGreetingService = new GreetingService();
      return String.format("Hello %s", newGreetingService.greet(name));
    }
}

在上面的示例中/greeting可以使用,但是/greeting2会失败,因为嵌套的依赖项无法解析。

因此,如果要对对象进行弹簧管理,则必须对其进行自动装配。一般来说,对于视图层pojos和自定义bean配置,您将使用new关键字。

Java 2022/1/1 18:21:31 有472人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶