Nous avons résumé comment configurer l'injection de dépendances pour Spring Framework.
Par défaut, les packages de la même hiérarchie que les packages de la classe avec @ ComponentScan
sont analysés. Si vous souhaitez analyser d'autres classes, spécifiez le nom du package dans scanBasePackage
.
// @Il peut également être spécifié pour les annotations composées telles que SpringBootApplication.
@ComponentScan(scanBasePackages={"com.example"})
Définissez l'objet dépendant en tant que membre de private`` final
, et définissez le constructeur qui reçoit l'objet dépendant comme argument dans le constructeur. Lors de l'utilisation de Lombok, cela peut être décrit comme suit.
@Component
class ComponentA { ...
@RequiredArgsConstructor
class ClassA {
// @Le câblage automatique peut être omis.
private final ComponentA componentA;
...
Auparavant, il était courant de spécifier «@ Autowired» pour les membres non «finaux» ou leurs Setters.
class ClassA {
@Autowired
private ComponentA componentA;
...
class ClassA {
private ComponentA componentA;
@Autowired
public void setComponentA(ComponentA componenA) {
...
Actuellement, cela est recommandé car l'utilisation du constructeur présente les avantages suivants.
final
. (Normalement, la variable qui stocke l'objet DI n'est pas réécrite.)Puisqu'il s'agit d'un standard Java, il est facile de passer à un autre conteneur DI.
@Named //Ou@ManagedBean
class ComponentA { ... }
Spécifiez @ Inject
dans le constructeur (ou Setter). (Le poseur est également acceptable.)
@RequiredArgsConstructor(onConstructor=@__(@Inject))
class ClassA {
private final ComponentA componentA;
...
Vous pouvez également spécifier «@ Inject» comme membre.
class ClassA {
@Inject
private ComponentA componentA;
...
Recommended Posts