Hello,
Voici un exemple pour illustrer ma question :
@Service
public class EmployeeService {
private final DepartmentService departmentService;
private final String additionalParameter;
@Autowired // CETTE ANNOTATION EST OPTIONNELLE DEPUIS UNE CERTAINE VERSION DE SPRING
public EmployeeService(
String additionalParameter,
DepartmentService departmentService
)
{
this.departmentService = departmentService;
this.additionalParameter = additionalParameter;
}
Le plugin Spring d’Intellij IDEA me dit que "Could not autowire. No beans of 'String' type found.", à juste titre puisque Spring va tenter d’injecter ces deux dépendances. Or, je souhaiterais que le deuxième paramètre ne soit pas une dépendance à injecter justement, mais une simple chaîne de caractères.
Cela signifie donc que je devrais pouvoir exécuter ça : new EmployeeService("bidule");
, sans avoir besoin de spécifier le second paramètre, puisque Spring le ferait lui-même.
Sauf que je ne comprends pas comment faire. Je sais qu’il y a l’annotation @Value
mais visiblement ce n’est pas non plus ce que je recherche. J’ai l’impression que dès qu’on déclare un Bean de type Service, on est obligé de subir la DI sur absolument tous les paramètres du constructeur, ce qui est bizarre.
Merci beaucoup et bonne soirée !
Jars