J'ai des cours en dessous.
Optional.ofNullable(operationMap.get("test_op1"));
3 Réponses :
Vous êtes probablement instanciant code> Opération code> avec Ceci fait votre Si vous le faites: P> Nouveau code> comme suit:
opération code > instance non-printemps gérée. Par conséquent, puisque le printemps ne sait pas de votre instance, il ne peut pas changer vos dépendances. P>
@Component
public class Operation {
...
}
Oui tu as raison. Je crée une nouvelle instance pour obtenir une opération connexe à partir d'une carte. Veuillez renvoyer ma question mise à jour
C'est le but. Cela répond à votre question. Le printemps ne peut pas cibler le haricot dans les instances que vous créez avec nouveau. Soit marquer comme @Component code> (sans
Nouveau code>) et AutoWire
opération code> lui-même lorsque vous en avez besoin ou utilisez
@configurable code >.
Avez-vous lu ma réponse? Il y a une référence à ce que vous devez faire: @configurable code>. Mais c'est une chose assez coûteuse à faire, et il ne s'agit pas simplement d'ajouter
@configurable code>. Veuillez vous référer aux liens.
Je peux voir quelques possibilités, en fonction de ce que vous avez partagé: p>
La structure de l'emballage n'est pas correcte - si la classe Il vous manque peut-être d'une annotation de printemps sur la classe Si vous essayez de créer la bean manuellement, vous devriez le faire en utilisant Opération code> n'est pas dans le même package (ou un sous-package) comme classe code> principale code>, L'analyse des composants peut choisir votre classe.
Veuillez vous reporter Ceci < / a> réponse pour vous assurer que vous avez correctement implémenté la structure de l'emballage. P> LI>
opération code>, telle que
@Component code> ou
@service code>. Ou vous pouvez instantifier la classe manuellement dans votre code, en dehors du contexte de l'application de printemps. Veuillez vérifier que vous créez le haricot correctement. P> li>
ol>
@bean code> dans une classe de configuration. P>
Les classes abstraites ne sont pas instanciées sans une sous-classes concrètes. Ils ne seront pas enregistrés en tant que composant au printemps au moment de l'exécution. Strong> p> li>
Injection de constructeur dans des sous-classes en béton. p> li>
Setter-injection dans une classe abstraite. P> li>
ul> li>
ol> Maintenant, les alternatives que vous pouvez prendre pour résoudre votre problème: p> Vous avez une interface et une classe avec le même nom que mise à jour du code à ceci: p>
opération code>. Veuillez le supprimer s'il vous plaît. P>
public interface Operation {
public GenericClientResponse validateCustomerId();
}
public abstract class AbstractOperation implements Operation {
UserAccountsRepository userAccountsRepository;
WebClient.Builder webClientBuilder;
@Autowired
public final void setUserAccountsRepository(UserAccountsRepository userAccountsRepository) {
this.userAccountsRepository = userAccountsRepository;
}
@Autowired
public final void setWebClientBuilder(LogRepository webClientBuilder) {
this.webClientBuilder = webClientBuilder;
}
public GenericClientRequest buildClientValidationRequest() {
return new GenericClientRequest();
}
public GenericClientResponse validateCustomerId() {
// code
}
}
@Component
public class OperationImpl extends AbstractOperation {
public void someMethod() {
userAccountsRepository.someRepositoryMethod();
}
}
Pourriez-vous ajouter quelques détails à votre code: 1. Les paquets de toutes les classes que vous avez montrées et la classe de démarrage code> code>. 2. Annotation sur la classe
opération code>.
Pouvez-vous montrer comment vous instaniez
opération code>?
Veuillez vous reporter à ma question mise à jour @ priyank-sriv
Veuillez vous reporter à ma question mise à jour @hasancansaral
Il n'y a pas de réponse à ma question dans votre mise à jour @ bynu022.