You are free to use any of the standard Spring Framework techniques to define your beans and their injected dependencies.
We generally recommend using constructor injection to wire up dependencies and @ComponentScan
to find beans.
If you structure your code as suggested above (locating your application class in a top package), you can add @ComponentScan
without any arguments or use the @SpringBootApplication
annotation which implicitly includes it.
All of your application components (@Component
, @Service
, @Repository
, @Controller
etc.) are automatically registered as Spring Beans.
The following example shows a @Service
Bean that uses constructor injection to obtain a required RiskAssessor
bean:
link:{docs-java}/using/springbeansanddependencyinjection/singleconstructor/MyAccountService.java[role=include]
If a bean has more than one constructor, you’ll need to mark the one you want Spring to use with @Autowired
:
link:{docs-java}/using/springbeansanddependencyinjection/multipleconstructors/MyAccountService.java[role=include]
Tip
|
Notice how using constructor injection lets the riskAssessor field be marked as final , indicating that it cannot be subsequently changed.
|