Benefits of JavaConfig over XML configurations in Spring?

前端 未结 2 392
南方客
南方客 2020-12-02 20:23

Earlier the configurations used to be in hard coded in the code, later it was externalized to .property files (for sake of avoiding hard coded values, avoiding changing code

相关标签:
2条回答
  • 2020-12-02 20:33

    There are some advantages

    1. Java is type safe. Compiler will report issues if you are configuring right bean class qualifiers.
    2. XML based on configuration can quickly grow big. [Yes we can split and import but still]
    3. Search is much simpler, refactoring will be bliss. Finding a bean definition will be far easier.

    There are still people who like XML configuration and continue to do it.

    References: Java configuration advantages Some more reasons

    0 讨论(0)
  • 2020-12-02 20:38

    Correct answer was given here, Other-than that answer, I give one more point

    According to the Spring 5 reference

    XML-based metadata is not the only allowed form of configuration metadata. The Spring IoC container itself is totally decoupled from the format in which this configuration metadata is actually written. These days many developers choose Java-based configuration for their Spring applications.

    it means nowadays, people are moving towards java based config

    for example: 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="controller" />
        <context:component-scan base-package="dao" />
        <context:component-scan base-package="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>  
    

    and same config in java based style

    @Configuration
    @EnableWebMvc
    
    @ComponentScans({
            @ComponentScan("controller"),
            @ComponentScan("dao"),
            @ComponentScan("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;
        }
    }
    

    what is easy to understand? Obviously, the Java-based config is easy to understand.

    people who write codes and others can easily understand java code than XML. and you do not need to know about XML if you only know Java.

    0 讨论(0)
提交回复
热议问题