您可以在spring应用程序中使用new关键字创建对象。
但是这些对象将不在Spring Application Context的范围内,因此不受Spring管理。
由于这些不是spring管理的,因此将无法解析任何嵌套的依存关系级别(例如,您的Service类具有对Repository类的引用等)。
因此,如果尝试在服务类中调用方法,则最终可能会得到存储库的NullPointer。
@Servicepublic class GreetingService { @Autowired private GreetingRepository greetingRepository; public String greet(String userid) { return greetingRepository.greet(userid); }}@RestControllerpublic 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关键字。



