Auparavant, les configurations étaient codées en dur dans le code, plus tard, elles ont été externalisées dans des fichiers .property (pour éviter les valeurs codées en dur, pour éviter de changer de code pour changer les configurations..etc), puis elles sont passées au XML (pour pour être plus standardisé, sans erreur ... etc.)
Maintenant, en lisant sur @Configuration au printemps 3, il semble que nous revenions à nouveau à l'approche initiale.
Pourquoi voudrions-nous coder en dur les configurations dans le code plutôt que de l'externaliser?
Il y a quelques avantages
Il y a encore des gens qui aiment la configuration XML et continuent de le faire.
Références: Avantages de la configuration JavaQuelques raisons supplémentaires
Selon le référence Spring 5
Les métadonnées basées sur XML ne sont pas la seule forme autorisée de métadonnées de configuration. Le conteneur Spring IoC lui-même est totalement découplé du format dans lequel ces métadonnées de configuration sont réellement écrites. De nos jours, de nombreux développeurs choisissent une configuration basée sur Java pour leurs applications Spring.
cela signifie que de nos jours, les gens se dirigent vers Java config based
par exemple: Spring web-mvc config in xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="hms.controller" />
<context:component-scan base-package="dao" />
<context:component-scan base-package="hms.service" />
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>
et même configuration dans Java
@Configuration
@EnableWebMvc
@ComponentScans({
@ComponentScan("hms.controller"),
@ComponentScan("dao"),
@ComponentScan("hms.service")
})
public class WebMVCConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
qu'est-ce qui est facile à comprendre? De toute évidence, la configuration basée sur Java est facile à comprendre.
les personnes qui écrivent des codes et d'autres peuvent facilement comprendre Java code que XML. et vous n'avez pas besoin de connaître XML si vous ne connaissez que Java.