Вы можете создавать объекты с помощью ключевого слова new в приложении Spring.
Но эти объекты выходят за рамки контекста приложения 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
.