2015-05-29 14 views
9

Używam konfiguracji adnotacji Spring Boot. Mam klasę, której konstruktor akceptuje 2 parametry (ciąg, inna klasa).Wprowadzanie parametrów do konstruktora za pomocą adnotacji na wiosnę

Fruit.java

public class Fruit { 
    public Fruit(String FruitType, Apple apple) { 
      this.FruitType = FruitType; 
      this.apple = apple; 
     } 
} 

Apple.java

public class Apple { 

} 

mam klasa musi autowire powyższej klasy wstrzykując parametry do konstruktora żelaza ("owoc" klasy jabłkowy)

Cook.java

public class Cook { 

    @Autowired 
    Fruit applefruit; 
} 

Kucharz klasa potrzeba autowire owoców klasy z parametrami („żelazną owoc”, klasa Apple)

Konfiguracja XML wygląda następująco:

<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> 

jak to osiągnąć tylko przy użyciu konfiguracji adnotacji?

Odpowiedz

9

jabłko musi być wiosna zarządzane fasola:

@Component 
public class Apple{ 

} 

owocowe, a także:

@Component 
public class Fruit { 

    @Autowired 
    public Fruit(
     @Value("iron Fruit") String FruitType, 
     Apple apple 
     ) { 
      this.FruitType = FruitType; 
      this.apple = apple; 
     } 
} 

Uwaga wykorzystanie @Autowired i @Value adnotacji.

Cook powinien również mieć @Component.

Aktualizacja

Albo można użyć @Configuration i @Bean adnotacji:

@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()); 
    } 
    ... 
} 
+0

mam ulepszone moje pytanie trochę. Jeśli muszę wstrzykiwać różne jabłka (czerwone lub zielone jabłko), co robić. Różne ziarna tej samej klasy. Parametry konstruktora klasy Fruit należy wstrzyknąć redapple lub greenapple – vishnumanohar

+0

@vishnumanohar zaktualizował moją odpowiedź. – medvedev1088

+0

Co się stanie, jeśli Apple nie jest zarządzane w wiosennej wersji i z biblioteki innej firmy, której nie można zmodyfikować? – Claus

Powiązane problemy