I just start learning spring. I read some codes like below. But I don't understand how ResultBuilderFactory can return the correct class. Can somebody please explain? Thanks!
public interface ResultBuilder{
public void print();
}
@Component
public class DefaultResultBuilder implement ResultBuilder{
public void print(){System.out.printlin("DefaultResultBuilder"};
}
@Component
public class HtmlResultBuilder implement ResultBuilder{
public void print(){System.out.printlin("HtmlResultBuilder"};
}
@Component
public class ResultBuilderFactory{
private final ResultBuilder defaultResultBuilder;
private final ResultBuilder htmlResultBuilder;
public ResultBuilder get(String name){
if(name.equal("HTML") return htmlResultBuilder;
return defaultResultBuilder;
}
Updated:
Just update typo for Component annotation. My bad... I tried the code, and got error: "ResultBuilderFactory required a single bean, but 2 were found....Consider marking one of the beans as @Primary, ... or using @Qualifer..." How can the original code work without using Primary or @Qualifier