Inject parameters to constructor through annotation in Spring -
i using spring boot annotation configuration. have class constructor accepts 2 parameters (string, class).
fruit.java
public class fruit { public fruit(string fruittype, apple apple) { this.fruittype = fruittype; this.apple = apple; } } apple.java
public class apple { } i have class needs autowire above class injecting parameters constructor("iron fruit",apple class)
cook.java
public class cook { @autowired fruit applefruit; } the cook class need autowire fruit class parameters("iron fruit",apple class)
the xml configuration looks this:
<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> how achieve using annotation configuration only?
apple must spring-managed bean:
@component public class apple{ } fruit well:
@component public class fruit { @autowired public fruit( @value("iron fruit") string fruittype, apple apple ) { this.fruittype = fruittype; this.apple = apple; } } note usage of @autowired , @value annotations.
cook should have @component too.
update
or use @configuration , @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()); } ... }
Comments
Post a Comment