web-dev-qa-db-fra.com

Avantages de JavaConfig sur les configurations XML au printemps?

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?

36
yathirigan

Il y a quelques avantages

  1. Java est sûr de type. Le compilateur signalera les problèmes si vous configurez les qualificateurs de classe de bean appropriés.
  2. Le XML basé sur la configuration peut rapidement grandir. [Oui, nous pouvons diviser et importer, mais toujours]
  3. La recherche est beaucoup plus simple, le refactoring sera un bonheur. Trouver une définition de bean sera beaucoup plus facile.

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

33
Narain

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.

0
majuran