I create a concrete Quest, annotated so that Spring sees it as a Component qualified as quest.
@Component @Qualifier("quest") public class SlayDragonQuest implements Quest { @Override public String embark() { return "Embarking on quest to slay the dragon!"; } }I annotate the BraveKnight component, that Springs can now manage directly the wiring on its own, using in the Constructor Injection a component qualified as quest.
@Component("knight") public class BraveKnight implements Knight { // ... @Autowired public BraveKnight(@Qualifier("quest") Quest quest) { this.quest = quest; } // ... }Spring tries to inject in the resource owned by the controller, seen in the previous post, a component with the same name as its Java type (lowercase fist letter, though), and then maps the call the the /quest URI using the controller method annotated as request mapping.
Once the Spring Web app is started in the Boot Dashboard, we can consume the service from a browser.
I have written this post while reading the first chapter of Spring in Action, Fourth Edition by Craig Walls. While doing it, I have ported the original code to a Maven Spring Boot Web project on the STS IDE, using AspectJ annotations instead of using the classic xml configuration.
Full code on github.
No comments:
Post a Comment