Spring中JavaConfig优于XML配置的好处?

Spring中JavaConfig优于XML配置的好处?,spring,annotations,spring-3,spring-annotations,Spring,Annotations,Spring 3,Spring Annotations,早些时候,配置在代码中是硬编码的,后来它被外部化到.property文件(为了避免硬编码值,为了更改配置而避免更改代码..等等),然后它移动到XML(为了更标准化,无错误..等等) 现在,在阅读Spring3中关于@Configuration的内容时,我们似乎又回到了最初的方法 为什么我们要在代码中硬编码配置,而不是 将其外部化 有一些优点 Java是类型安全的。如果您需要,编译器将报告问题 配置正确的bean类限定符 基于配置的XML可以迅速发展壮大。是的,我们可以分开 和进口,但仍然] 搜索

早些时候,配置在代码中是硬编码的,后来它被外部化到.property文件(为了避免硬编码值,为了更改配置而避免更改代码..等等),然后它移动到XML(为了更标准化,无错误..等等)

现在,在阅读Spring3中关于@Configuration的内容时,我们似乎又回到了最初的方法

为什么我们要在代码中硬编码配置,而不是 将其外部化


有一些优点

  • Java是类型安全的。如果您需要,编译器将报告问题 配置正确的bean类限定符
  • 基于配置的XML可以迅速发展壮大。是的,我们可以分开 和进口,但仍然]
  • 搜索要简单得多,重构将是一件乐事。找豆子 定义将容易得多
  • 仍然有人喜欢XML配置并继续这样做

    参考资料: 给出了正确的答案,除此之外,我还多加一分

    根据

    基于XML的元数据不是唯一允许的配置形式 元数据。Spring IoC容器本身与 实际写入此配置元数据的格式。 如今,许多开发人员选择基于Java的配置作为他们的目标 Spring应用程序

    这意味着现在,人们正朝着基于java的配置方向发展

    例如:xml格式的SpringWebMVC配置

    <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>  
    
    什么是容易理解的?显然,基于Java的配置很容易理解


    编写代码的人和其他人比XML更容易理解java代码。如果您只了解Java,则不需要了解XML。

    这取决于Java类中加载的配置类型。就我们所见,将所有配置放在一个地方总是安全的。我们应该从更广阔的角度或更大的范围来思考一切。不构建应用程序,我们可以使应用程序在不同的环境中以不同的方式运行。@prashanth-g单片配置文件?大规模的?我认为这不算什么。想象一下,来自不同模块上的多个开发人员的多个配置更改。我宁愿在小的模块化配置文件中进行每个更改,而不是在一个地方进行更改。@jonasespelita,这是一个多集群环境中的单片应用程序。在这个设置中,我们认为在XML文件中具有某些配置(如IP、URL等)将是一个更好的解决方案。但这取决于你的需求和环境。进一步检查@prashanth-g猜测最初的问题是关于Java配置的优势。这不是一个比另一个更好的问题。由于两者都受支持,您可以做出选择。我们还在做单片石吗?gr8例子。但是不同环境的配置又如何呢。这是编译后不可能的,这是一个主要的缺点基于java的配置是无用的,spring的主要优点是与java的解耦,因此您可以在不重新编译或重建的情况下更改配置
    @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;
        }
    }