`

简化Spring XML配置

阅读更多

       在XML配置Spring中,可以通过<constructor-arg>和<property>元素装配bean,但是有时候,这样的装配并没有二义性。于是就可以使用Spring的自动装配来简化XML文件了。在Spring不能唯一的确定一个可以装配的Bean时,Spring并不会做太过积极的猜测,而是直接报错,抛出异常。这些简化手段,有三种形式。

 

(1)使用xml属性:1)byName;2)byType;3)constructor;4)autodetect;

byName通过把与装配属性具有相同名字(bean ID)的bean自动装配到Bean的对应属性中。

byType把与和要转配的bean具有相同属性的bean装配进去。

constructor把与构造器具有相同属性的Bean装配到构造器对应属性中。

autodetect先尝试construct在尝试byType

 

<bean id="instrument" class="org.spring.chapter3.Saxophone" />

<bean id="kenny"
	class="org.spring.chapter3.Instrumentalist"
	autowire="byType" >
<property name="song" value="Jingle Bells" />
</bean>

 声明两个bean,一个id为instrument和一个kenny。这里是要用instrument来装配kenny的一个instrument属性,在kenny的属性标签中声明了byType的自动装配,这里在bean中所依靠的setInstrument方法。

 

(2)使用注解装配

使用注解自动装配于在xml中使用autowire属性自动装配没有太大的区别。但是使用注解方式允许更细粒度的自动装配。要启用Spring使用注解的装配要在xml中设置相应的命名空间的属性。大致如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
	<context:annotation-config />
	
	<bean id="instruments" class="org.spring.chapter3.Piano" />
	<bean id="kenny"
		class="org.spring.chapter3.Instrumentalist" >
	<property name="song" value="Jingle Bells" />
	</bean>
	
</beans>

 相对于不使用注解,此xml文件在beans属性中增加了三行。并使用<context:annotation-config />启用了注解配置。这里声明了一个instrments的bean但是在此文件中,并没有写相应的注入语句,而是在bean的Instrument属性前使用了@Autowire注解来配置这个属性。这里使用的就是基于注解的自动装配了。

 

(3)基于Java的配置

基于java的配置并不能完全消除xml只是将xml尽量做到最简。在xml中已经没有bean的声明了,bean的声明被转移到,相应的声明bean的java文件中去了。但是xml文件在这里依然是必须的。而且要在xml文件中启用这个功能,相应的xml文件如下。使用此功能必须导入cglib的库,否则无法使用此功能。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
<context:component-scan 
	base-package="org.spring.chapter3" />
	
</beans>

 

 下面是用来代替bean声明的java文件

package org.spring.chapter3;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SpringConfig {
	
	@Bean
	public Instrument piano(){
		return new Piano();
		
	}
	@Bean
	public Performer kenny(){
		Instrumentalist kenny = new Instrumentalist();
		kenny.setSong("Jingle Bells");
		kenny.setInstrument(piano());
		return kenny;
	}

}

 这段代码声明了一个名为piano的bean和一个名为kenny的bean,并且在kenny中将piano作为其属性注入到kenny中了。最后返回kenny,可在java中使用相应的方法来获取该bean了。

 

 在这里只是按照自己的理解将spring自动配置的方法分类为三种,并无任何依据,只为便于自己理解记忆。且上面所列代码均是不完整,只列出个人感觉比较重要,对于理解使用这种装配方法重要的代码。

 

 

 

注:Spring实战(第三版)的学习笔记

分享到:
评论

相关推荐

    Spring XML配置的12个技巧

    3. 使用简化格式:Spring XML配置支持简化语法,减少子元素的使用,如将`&lt;value&gt;`和`&lt;ref&gt;`作为属性直接嵌入`&lt;property&gt;`和`&lt;constructor-arg&gt;`标签中。这有助于减少冗余代码,提高配置文件的可读性。 4. 尽量使用`...

    spring bean XML配置入门

    在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...

    SSH三大框架整合 struts2(使用xml配置)+hibernate(使用xml配置)+spring(使用xml配置)

    Spring的XML配置文件(如applicationContext.xml)用于声明bean及其依赖。通过@Autowired注解或XML配置,Spring可以自动装配bean,实现依赖注入。同时,Spring还提供了AOP(面向切面编程)支持,用于添加如日志、...

    spring配置文件:整理总结Spring中XML配

    ### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...

    Spring xml 方式配制的小demo

    虽然本示例是XML配置,但Spring还支持基于注解的配置,如@Service、@Component、@Repository和@Controller,这些注解可以替代XML配置,简化代码。 9. **集成环境** 文件`.classpath`、`.mymetadata`、`.project`...

    xbean简化spring配置文件.doc

    xbean简化spring配置文件 xbean是 Apache Geronimo 项目的一个子项目,旨在简化Spring配置文件的编写。下面我们来详细介绍如何使用xbean简化Spring配置文件。 在Spring之前,我们使用Factory模式来管理bean。例如...

    Spring-hibernate结合使用全xml配置方式

    Spring框架提供了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等核心特性,通过XML配置文件管理Bean的生命周期和依赖关系。Hibernate则是一个强大的ORM框架,能够将...

    31. Spring Boot导入XML配置【从零开始学Spring Boot】

    Spring Boot以其简化Spring应用的初始搭建以及开发过程而闻名,通常推崇的是Java配置而非XML配置。然而,在某些场景下,我们可能需要与遗留系统集成或者有特定的需求来使用XML配置。本文将详细介绍这一过程。 首先...

    SSH三大框架整合mini案例 struts 2(xml配置)+hibernate(注解)+spring(xml配置)

    在这个mini案例中,我们将深入理解SSH框架如何协同工作,以实现一个基于XML配置的Struts 2、注解驱动的Hibernate以及XML配置的Spring的整合。 **Struts 2框架** 是一个MVC(Model-View-Controller)架构,主要负责...

    Spring XML配置十二个最佳实践

    在Spring XML配置文件中,可以使用简化的语法来为Bean的构造器参数和属性赋值。例如,以下两种写法是等价的: **原始写法:** ```xml &lt;bean id="orderService" class="com.lizjason.spring.OrderService"&gt; ...

    Spring框架xml注解配置方式实例

    XML配置允许我们声明性地配置bean,但随着注解的引入,我们可以在代码中直接标注bean的属性,简化配置。 3. **类源码(springtest3)** "springtest3"通常代表一个或多个Java源代码文件,这些文件包含使用Spring...

    spring基于task标签和通过xml配置实现任务的区别

    - Spring与Quartz的整合可以通过XML配置或Java配置实现,可以更精细地控制作业(Job)和触发器(Trigger),并且支持集群和持久化。 - 如果需要实现分布式调度、高可用性和更复杂的调度逻辑,Quartz可能是更好的...

    eclipse添加springXML文件的提示

    - 如果XML文件中的配置与Spring XSD文件不匹配,Eclipse会给出具体的错误提示信息。 #### 五、小结 本文详细介绍了如何在Eclipse IDE中为Spring XML文件添加提示功能的方法。通过遵循以上步骤,我们可以有效地...

    spring IOC容器依赖注入XML配置

    在本教程中,我们将深入探讨如何通过XML配置在Spring IOC容器中实现依赖注入。 首先,我们需要了解Spring的IOC容器。IOC容器是Spring的核心,它负责管理对象的生命周期和对象间的依赖关系。容器通过读取XML配置文件...

    Spring全注解project示例 (无web.xml配置)

    标题 "Spring全注解project示例 (无web.xml配置)" 提供了我们即将探讨的核心主题:一个使用Spring框架,完全依赖注解配置的项目,且没有传统的web.xml部署描述符。这种配置方式在现代Spring应用中非常常见,因为它...

    spring-boot 自定义xml配置web请求拦截器

    Spring Boot简化了传统Spring应用的配置,但仍然允许用户通过XML配置来扩展功能,特别是在某些特定场景下,如集成第三方库或定制化行为时。 首先,我们需要理解Spring Boot的核心组件——Spring MVC,它是Spring...

    struts2-spring4-hibernate4_xml配置的框架

    Struts2-Spring4-Hibernate4 XML配置的框架是一个经典的Java Web开发架构,它整合了三个主流的开源框架:Struts2、Spring4和Hibernate4。这个框架的配置主要通过XML文件来完成,同时也可以结合注解的方式进行更加...

Global site tag (gtag.js) - Google Analytics