`
JavaSam
  • 浏览: 951745 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用 JavaConfig 替换 Spring 的 XML 配置

 
阅读更多

在这个博客上,有关Spring的文章正变成一种趋势,我应该申请一个SpringSource的位置。由于我在使用XML 为Spring做配置时的固执,我的同事时常会骂我。是的,他看起来似乎是2000年代的,但XML确实具有一定的优势:

  1. 配置集中化,所有的组件并不是分散的,因此使你对beans有一个很好的概览,而且他们在同一个地方进行连接。
  2. 如果你需要分割文件,没问题,Spring可以帮你实现。然后(Spring)会通过内部<import>标签进行重新组合或者外部上下文文件进行聚合。
  3. 只有XML的配置可以显示的装配—而不是自动装配。有时候,后者(自动装配)对于我自己的口味有点过于神奇。表面上看很简单,却隐藏了复杂性:我们不仅需要在按类型和按名称自动装配之间进行切换,但更重要的是,在所有合格的转义,但经验更加丰富的Spring开发人员选择相关bean的策略。配置文件似乎让这变得更容易,但相对还是陌生的且了解的不够。
  4. 最后,但同等重要的,XML对Java文件是完全适用的:在两者之间没有耦合,因此类可以再多个不同的上下文配置文件中使用。

XML的唯一问题是你要等到运行时的时候来发现Bean里面的错误或者其他愚蠢的问题。另一方面,使用Spring的IDE插件(或者其他整合了Spring Tools Suite)就能帮助到你(处理这方面问题)。

在XML和直接注解在一个Bean类之间有一个有趣的选择,它就是JavaConfig,它是从V3.0后嵌入到Spring里的一个以前的独立项目。它用Java的编译时检查整合了XML的去耦的优势。JavaConfig能够等价看成是XML文件,不过它只是用Java编写的。它的完整文档在网上可以看到,而这篇文章帮助你开始使用JavaConfig。让我们把下面的XML文件移植为一个JavaConfig来作为一个例子吧:

01 <?xml version="1.0" encoding="UTF-8"?>
02 <beans xmlns="http://www.springframework.org/schema/beans"
03     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
04     xsi:schemaLocation="http://www.springframework.org/schema/beans
05   
06 http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">
07   
08     <bean id="button" class="javax.swing.JButton">
09         <constructor-arg value="Hello World" />
10     </bean>
11   
12     <bean id="anotherButton" class="javax.swing.JButton">
13         <property name="icon" ref="icon" />
14     </bean>
15   
16     <bean id="icon" class="javax.swing.ImageIcon">
17         <constructor-arg>
18             <bean class="java.net.URL">
19               <constructor-arg value="http://morevaadin.com/assets/images/learning_vaadin_cover.png" />
20             </bean>
21         </constructor-arg>
22     </bean>
23 </beans>

下面是等价的文件:

01 import java.net.MalformedURLException;
02 import java.net.URL;
03   
04 import javax.swing.Icon;
05 import javax.swing.ImageIcon;
06 import javax.swing.JButton;
07   
08 import org.springframework.context.annotation.Bean;
09 import org.springframework.context.annotation.Configuration;
10   
11 @Configuration
12 public class MigratedConfiguration {
13   
14     @Bean
15     public JButton button() {
16   
17         return new JButton("Hello World");
18     }
19   
20     @Bean
21     public JButton anotherButton(Icon icon) {
22   
23         return new JButton(icon);
24     }
25   
26     @Bean
27     public Icon icon() throws MalformedURLException {
28   
29         URL url = new URL("http://morevaadin.com/assets/images/learning_vaadin_cover.png");
30   
31         return new ImageIcon(url);
32     }
33 }

用法很简单:使用@Configuration注解主要的类个别的生成方法就用@Bean来注解。恕我直言,唯一的缺点是它使用了自动连接。除此之外,它做的不错。

注意在Web工程中Web部署文件应该增加以下几行:

 

1 <context-param>
2     <param-name>contextClass</param-name>
3     <param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
4 </context-param>
5 <context-param>
6     <param-name>contextConfigLocation</param-name>
7     <param-value>com.packtpub.learnvaadin.springintegration.SpringIntegrationConfiguration</param-value>
8 </context-param>

这篇文章Maven/Eclipse下的源码 下载

更多:

  • Java-based container configuration documentation
  • AnnotationConfigWebApplicationContextJavaDoc
  • @ContextConfigurationJavaDoc (to configure Spring Test to use JavaConfig)

 

 

 

 

0
0
分享到:
评论

相关推荐

    快速搭建一个java config(无web.xml)的web工程(二)

    在Java开发领域,Web应用程序的配置方式有很多种,其中一种是使用Java Config,它提供了一种无需XML配置的方式来创建和管理Spring框架中的bean。本篇文章将详细介绍如何快速搭建一个基于Java Config的Web工程,该...

    Spring实战之XML与JavaConfig的混合配置详解

    总结起来,Spring的XML配置和JavaConfig配置可以灵活地混合使用,互相引用。这种灵活性使得开发者可以根据项目需求选择最适合的配置方式,同时也可以逐步从XML迁移到JavaConfig,降低配置复杂性,提高代码的可读性和...

    Spring中XML配置文件的十二个最佳方法.doc

    在Spring框架中,XML配置文件是应用的核心组成部分,用于定义和...后续的六个最佳实践可能涉及更多高级话题,如使用 Profiles、注解驱动的配置以及基于Java的配置等,这些同样对提升Spring应用的结构和效率至关重要。

    解析excel、xml配置文件&&输出java测试文件Demo

    本Demo将演示如何使用Java来解析Excel和XML配置文件,并基于这些配置生成Java测试文件。首先,我们需要了解涉及到的关键技术和库。 1. **解析Excel文件**: - Java中处理Excel文件主要使用Apache POI库。POI是...

    springcloud配置中心搭建以及git多文件夹存放配置文件

    在实际的应用场景中,可能会有多个不同的微服务应用需要使用配置中心来管理配置文件。为了更好地组织这些配置文件,可以采用 Git 仓库中的多文件夹结构来存放不同项目的配置文件。 例如,可以在 Git 仓库中创建以下...

    Spring Boot面试专题1

    虽然可以完全用JavaConfig替换XML配置,但通常建议两者结合使用以达到最佳效果。 4. 如何在Spring Boot中实时刷新更改而无需重启服务器? Spring Boot引入了DevTools(开发者工具)模块,它包含了热部署功能,当...

    spring2.5 配置VM

    `PropertyPlaceholderConfigurer`允许我们在XML配置文件中使用 `${property}` 形式的占位符,这些占位符的值会在运行时被VM参数或系统属性替换。 例如,我们可以在XML配置中这样使用: ```xml ...

    Spring动态加载配置文件

    在初始化容器时,Spring会读取XML、Java配置或基于注解的配置,构建出一个对象图。对于传统的静态配置,一旦容器启动,配置就固定了,如果需要更改,必须重新启动应用。 要实现动态加载配置文件,我们可以利用...

    Spring 事务配置详解(多种配置方法)

    本文将详细解析Spring事务配置的多种方法,包括XML配置和注解方式。 首先,理解Spring事务配置的基本组件至关重要。这些组件主要包括: 1. **DataSource**:数据源,它是连接数据库的桥梁,负责管理与数据库的连接...

    Spring3.0 配置文件中加载Properties文件的小例子

    本篇将详细讲解如何在Spring 3.0的配置文件中加载Properties文件,以便在运行时动态获取和使用这些配置。 首先,我们需要一个Properties文件,例如`application.properties`,它通常放在项目的类路径根目录下。这个...

    http-->https后端Java接口spring boot项目配置文件及生成证书的方法.7z

    在Spring Boot中,如果你的应用需要SSH访问,可以使用Spring Cloud Config Server或JGit等工具实现配置管理。 总结起来,将Spring Boot应用从HTTP切换到HTTPS,主要涉及证书的生成、配置Spring Boot应用、处理...

    spring springmvc jpa配置文件

    在Spring中,我们可以使用`persistence.xml`文件来配置数据源、实体扫描以及JPA供应商。以下是一个简单的例子: ```xml &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi=...

    Spring属性占位符PropertyPlaceholderConfigurer的使用

    `PropertyPlaceholderConfigurer`是Spring提供的一个Bean工厂后处理器,它的主要任务是在Spring容器初始化Bean时,替换掉XML配置文件中所有`${...}`形式的占位符,将其替换为对应属性文件中的实际值。这使得我们可以...

    Spring+MyBatis含分页的基本配置

    MyBatis的配置文件`mybatis-config.xml`中,可以设定日志工厂和其他全局配置: ```xml &lt;mapper resource="com/example/mapper/UserMapper.xml"/&gt; ``` 接着,我们创建UserMapper接口和对应的XML映射...

    Spring demo

    这些技术都是Java开发中使用Spring框架进行企业级应用构建的基础。 首先,让我们深入了解**Bean自动装配**。在Spring中,Bean自动装配是容器管理组件依赖的一种方式,它能够自动为Bean设置所需的属性值,而无需在...

    spring+proxool配置spring+proxool配置

    在Java的Web应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能而被广泛使用。而Proxool是Oracle公司开源的一个数据库连接池组件,它提供了高效的数据库连接管理,有助于减少数据库资源的...

    spring事务配置详解

    2. **基于XML的AspectJ自动代理**:使用`&lt;tx:advice&gt;`和`&lt;aop:config&gt;`,Spring会自动为匹配的类和方法创建代理。例如: ```xml &lt;aop:config&gt; (* com.example.UserService.*(..))"/&gt; &lt;/aop:config&gt; *" read-...

    Spring Cloud 配置教程.docx

    Spring Cloud 提供了一个强大的工具——Spring Cloud Config,用于集中式管理应用的配置信息。这种方式不仅有助于统一管理多环境下的配置,还能够在不重启服务的情况下进行配置更新。 ##### 1.1 Spring Cloud ...

    (Idea)Spring+MyBatis配置及单元测试

    在`test1`目录下创建测试类,如`UserServiceTest.java`,使用`@RunWith(SpringRunner.class)`注解启用Spring测试环境,`@SpringBootTest`注解加载整个应用上下文,`@Autowired`注入要测试的服务: ```java @RunWith...

    Spring系列面试题129道(附答案解析)

    基于注解的容器配置是指使用Java注解来配置Spring IoC容器,而不是使用XML文件。这种方式使得配置更加简洁,并且易于维护。 26、如何在spring中启动注解装配? 在Spring中可以通过在XML配置文件中添加context命名...

Global site tag (gtag.js) - Google Analytics