在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实战(第三版)的学习笔记
相关推荐
3. 使用简化格式:Spring XML配置支持简化语法,减少子元素的使用,如将`<value>`和`<ref>`作为属性直接嵌入`<property>`和`<constructor-arg>`标签中。这有助于减少冗余代码,提高配置文件的可读性。 4. 尽量使用`...
在本文中,我们将深入探讨Spring框架中的Bean XML配置,这是Spring的核心特性之一,它允许我们定义、管理和装配应用中的对象。我们将围绕以下知识点展开: 1. **Spring框架基础**: Spring是一个开源的Java平台,...
Spring的XML配置文件(如applicationContext.xml)用于声明bean及其依赖。通过@Autowired注解或XML配置,Spring可以自动装配bean,实现依赖注入。同时,Spring还提供了AOP(面向切面编程)支持,用于添加如日志、...
### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...
虽然本示例是XML配置,但Spring还支持基于注解的配置,如@Service、@Component、@Repository和@Controller,这些注解可以替代XML配置,简化代码。 9. **集成环境** 文件`.classpath`、`.mymetadata`、`.project`...
xbean简化spring配置文件 xbean是 Apache Geronimo 项目的一个子项目,旨在简化Spring配置文件的编写。下面我们来详细介绍如何使用xbean简化Spring配置文件。 在Spring之前,我们使用Factory模式来管理bean。例如...
Spring框架提供了IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)等核心特性,通过XML配置文件管理Bean的生命周期和依赖关系。Hibernate则是一个强大的ORM框架,能够将...
Spring Boot以其简化Spring应用的初始搭建以及开发过程而闻名,通常推崇的是Java配置而非XML配置。然而,在某些场景下,我们可能需要与遗留系统集成或者有特定的需求来使用XML配置。本文将详细介绍这一过程。 首先...
在这个mini案例中,我们将深入理解SSH框架如何协同工作,以实现一个基于XML配置的Struts 2、注解驱动的Hibernate以及XML配置的Spring的整合。 **Struts 2框架** 是一个MVC(Model-View-Controller)架构,主要负责...
在Spring XML配置文件中,可以使用简化的语法来为Bean的构造器参数和属性赋值。例如,以下两种写法是等价的: **原始写法:** ```xml <bean id="orderService" class="com.lizjason.spring.OrderService"> ...
XML配置允许我们声明性地配置bean,但随着注解的引入,我们可以在代码中直接标注bean的属性,简化配置。 3. **类源码(springtest3)** "springtest3"通常代表一个或多个Java源代码文件,这些文件包含使用Spring...
- Spring与Quartz的整合可以通过XML配置或Java配置实现,可以更精细地控制作业(Job)和触发器(Trigger),并且支持集群和持久化。 - 如果需要实现分布式调度、高可用性和更复杂的调度逻辑,Quartz可能是更好的...
- 如果XML文件中的配置与Spring XSD文件不匹配,Eclipse会给出具体的错误提示信息。 #### 五、小结 本文详细介绍了如何在Eclipse IDE中为Spring XML文件添加提示功能的方法。通过遵循以上步骤,我们可以有效地...
在本教程中,我们将深入探讨如何通过XML配置在Spring IOC容器中实现依赖注入。 首先,我们需要了解Spring的IOC容器。IOC容器是Spring的核心,它负责管理对象的生命周期和对象间的依赖关系。容器通过读取XML配置文件...
标题 "Spring全注解project示例 (无web.xml配置)" 提供了我们即将探讨的核心主题:一个使用Spring框架,完全依赖注解配置的项目,且没有传统的web.xml部署描述符。这种配置方式在现代Spring应用中非常常见,因为它...
Spring Boot简化了传统Spring应用的配置,但仍然允许用户通过XML配置来扩展功能,特别是在某些特定场景下,如集成第三方库或定制化行为时。 首先,我们需要理解Spring Boot的核心组件——Spring MVC,它是Spring...
Struts2-Spring4-Hibernate4 XML配置的框架是一个经典的Java Web开发架构,它整合了三个主流的开源框架:Struts2、Spring4和Hibernate4。这个框架的配置主要通过XML文件来完成,同时也可以结合注解的方式进行更加...