qual è la differenza tra
@Configuration classe ConfigA estende ConfigB {// Alcuni fagioli definizioni qui} e
@Configuration @Import ({ConfigB.class}) classe ConfigA {// Alcuni bean definizioni qui}
@Import consente di importare più configurazioni mentre l'estensione limita l'utente a una classe poiché java non supporta l'ereditarietà multipla.
also if we are importing multiple configuration files, how does the ordering happen among the various config.
And what happens if the imported files have dependencies between them
Spring gestisce le dipendenze e l'ordine da solo indipendentemente dall'ordine indicato nella classe di configurazione. Vedi il codice di esempio sottostante.
public class School {
}
public class Student {
}
public class Notebook {
}
@Configuration
@Import({ConfigB.class, ConfigC.class})
public class ConfigA {
@Autowired
private Notebook notebook;
@Bean
public Student getStudent() {
Preconditions.checkNotNull(notebook);
return new Student();
}
}
@Configuration
public class ConfigB {
@Autowired
private School school;
@Bean
public Notebook getNotebook() {
Preconditions.checkNotNull(school);
return new Notebook();
}
}
@Configuration
public class ConfigC {
@Bean
public School getSchool() {
return new School();
}
}
public class SpringImportApp {
public static void main(String[] args) {
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ConfigA.class);
System.out.println(applicationContext.getBean(Student.class));
System.out.println(applicationContext.getBean(Notebook.class));
System.out.println(applicationContext.getBean(School.class));
}
}
ConfigB è importata prima ConfigC mentre ConfigB è autowiring il fagiolo definito da ConfigC (Scuola). Poiché l'autowiring dell'istanza School si verifica come previsto, la primavera sembra gestire correttamente le dipendenze.
fonte
2014-12-10 05:44:28