J'utilise la configuration d'annotation Spring Boot. J'ai une classe dont le constructeur accepte 2 paramètres (chaîne, une autre classe).
Fruit.Java
public class Fruit {
public Fruit(String FruitType, Apple apple) {
this.FruitType = FruitType;
this.Apple = Apple;
}
}
Apple.Java
public class Apple {
}
J'ai une classe qui doit câbler automatiquement la classe ci-dessus en injectant des paramètres au constructeur ("Iron Fruit", classe Apple)
Cook.Java
public class Cook {
@Autowired
Fruit applefruit;
}
La classe de cuisinier doit câbler automatiquement la classe Fruit avec des paramètres ("Iron Fruit", classe Apple)
La configuration XML ressemble à ceci:
<bean id="redapple" class="Apple" />
<bean id="greenapple" class="Apple" />
<bean name="appleCook" class="Cook">
<constructor-arg index="0" value="iron Fruit"/>
<constructor-arg index="1" ref="redapple"/>
</bean>
<bean name="appleCook2" class="Cook">
<constructor-arg index="0" value="iron Fruit"/>
<constructor-arg index="1" ref="greenapple"/>
</bean>
Comment y parvenir en utilisant uniquement la configuration d'annotation?
Apple doit être un haricot géré par le printemps:
@Component
public class Apple{
}
Fruits aussi:
@Component
public class Fruit {
@Autowired
public Fruit(
@Value("iron Fruit") String FruitType,
Apple apple
) {
this.FruitType = FruitType;
this.Apple = Apple;
}
}
Notez l'utilisation de @Autowired
et @Value
annotations.
Le cuisinier devrait avoir @Component
aussi.
Mise à jour
Ou vous pouvez utiliser @Configuration
et @Bean
annotations:
@Configuration
public class Config {
@Bean(name = "redapple")
public Apple redApple() {
return new Apple();
}
@Bean(name = "greeapple")
public Apple greenApple() {
retturn new Apple();
}
@Bean(name = "appleCook")
public Cook appleCook() {
return new Cook("iron Fruit", redApple());
}
...
}