Notre projet utilise le DI/IoC de printemps, donc j'utilise autowiring pour injecter des haricots. Le programme doit transmettre des paramètres à un objet pendant son instanciation. Et les paramètres sont connus au moment de l'exécution (pas au moment de la compilation).Comment passer le paramètre constructeur en utilisant le câblage automatique à ressort?
Comment réaliser ceci en utilisant l'autowiring. L'exemple de code est comme ci-dessous.
interface - IMessage
package com.example.demo.services;
public interface IMessage {
String message(String name);
}
Implementations-
SayHelloService
package com.example.demo.services;
import org.springframework.stereotype.Service;
@Service
public class SayHelloService implements IMessage {
String id;
public SayHelloService(String id) {
super();
this.id = id;
}
@Override
public String message(String name) {
return "Hello Dear User - " + name + ". Greeter Id: " + id ;
}
}
MasterService
package com.example.demo.services;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service
public class MasterService implements IMessage {
String creationTime;
MasterService() {
System.out.println("ms... default constructor");
creationTime = Long.toString(System.currentTimeMillis());
}
//classic java way of creating service
IMessage sayHelloServiceClassicWay = new SayHelloService(creationTime);
//how to achieve above using spring auto wiring. Below code does not exactly do same.
@Autowired
@Qualifier("sayHelloService")
IMessage sayHelloServiceAutoWired;
@Override
public String message(String name) {
return name.toString();
}
}
maintenant dans le programme ci-dessus (en MasterService) comment remplacer
iMessage sayHelloServiceClassicWay = new SayHelloService (creationTime);
avec code équivalent au ressort.
Créez un getter et un setter pour la variable, puis utilisez la méthode setter dans le champ autowired. – user641887
Dans votre fichier XML de configuration, spécifiez la propriété "creationTime" dans le bean de SayHelloService en tant que constructeur-arg. Le printemps l'autowire. – Coder
@ user641887, pourriez-vous ajouter du code plz. – samshers