Well, @Autowired is necessary for DI because there is no way to ensure the dependencies are injected globally, because Spring Boot automatically creates a control flow.
What are the annotations doing and how do other languages do DI and stuff like that?