You are free to use any of the standard Spring Framework techniques to define your beans
and their injected dependencies. For simplicity, we often find that using
@ComponentScan
(to find your beans) and using @Autowired
(to do constructor
injection) works well.
If you structure your code as suggested above (locating your application class in a root
package), you can add @ComponentScan
without any arguments. 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:
package com.example.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DatabaseAccountService implements AccountService { private final RiskAssessor riskAssessor; @Autowired public DatabaseAccountService(RiskAssessor riskAssessor) { this.riskAssessor = riskAssessor; } // ... }
If a bean has one constructor, you can omit the @Autowired
, as shown in the following
example:
@Service public class DatabaseAccountService implements AccountService { private final RiskAssessor riskAssessor; public DatabaseAccountService(RiskAssessor riskAssessor) { this.riskAssessor = riskAssessor; } // ... }
Tip | |
---|---|
Notice how using constructor injection lets the |