`

简化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配置文件:整理总结Spring中XML配

     在这篇文章里对于SpringXML配置我将向你展示12种比较好实战其中些实战不仅是好实战更是必要实战除 此以外还有其他原因例如领域模型设计都能影响XML配置但是这篇文章重点研究XML配置易读性和易管理性

    用于将所有Spring xml配置转换为基于Spring java的配置的工具(高分毕设).zip

    Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...

    Spring Boot是一个开源的Java框架,旨在简化Spring应用的初始搭建和开发过程 以下是对Spring Boot开发

    Spring Boot是一个开源的Java框架,旨在简化Spring应用的初始搭建和开发过程。以下是对Spring Boot开发的500字资源介绍: Spring Boot由Pivotal团队提供,它集成了众多常用的Spring功能,并进行了大量默认配置,使...

    SpringBoot开发.pd

    Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是简化新 Spring 应用的初始搭建... properties 配置文件,避免了烦琐而且容易出错的 XML配置文件,极大地简化了基于 Spring 框架的企业级应用开发的配置。

    49道Spring Boot面试题带答案(很全)

    开发人员可以通过简单的注解或XML配置来覆盖这些默认配置,而不需要手动编写大量的配置代码。 创建独立的应用程序:Spring Boot可以创建独立的应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs。...

    spring4示例代码

    spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域...spring-5 演示了声明式事务及使用xml配置文件处理事务

    25个经典的Spring面试问答

    配置与注解:理解Spring的XML配置和注解配置,并能够在这两种配置方式中进行选择。 Spring AOP与AspectJ:理解Spring AOP的概念,以及如何使用AspectJ实现AOP。 Spring与其它技术集成:了解Spring与其它技术的集成,...

    guns学习课程(包括收费的视频)完整版

    抛弃传统spring xml的配置方式,利用springboot + javabean方式配置spring,极大简化了pom.xml配置和spring配置. Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理...

    Java之Spring Boot详解

    (2)在 web.xml 文件中配置 Spring mvc 的前端控制器 (3)创建一个 spring mvc 的配置文件 (4)在 spring mvc 的配置文件中进行相关配置   1) 配置注解扫描路径   2)配置处理器映射器   3)配置处理器...

    spring-framework-2.5.1类包

    XML Schema的支持和自定义命名空间的使用大大减少了基于XML的配置。使用Java5及更新版本java的开发人员如今可以利用植入了像泛型(generic)和注解等新语言特性的Spring库。最近,和AspectJ表达式语言的紧密集成,...

    springboot总结.doc

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于...

    SpringBoot中pom.xml

    Spring Boot 中的 pom.xml 文件是项目使用 Maven 构建工具时的配置文件。此文件定义了项目的依赖项、插件和构建行为。通常,pom.xml 包括以下内容: ...这些配置有助于简化 Spring Boot 项目的搭建和构建。

    Spring入门案例-入门案例制作

    编写Spring核心配置文件spring.xml 在程序中读取Spring 配置文件,通过Spring框架获得Bean,完成相应的操作 在上面是我们的开发流程,我们第一步一般都是导入所需jar包,但由于刚开始时根本不知道该在什么时候用到...

    SpringBoot2.0教程.pdf

    Spring Boot 的主要优点: 为所有 Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化 Web 项目 没有冗余代码生成和 XML 配置的要求 简言之,Spring Boot 是一个快速开发的框架,能够...

    Spring常问的真实大厂面试题汇总(含答案)

    spring面试题 Spring 是个java企业级应⽤的开源开发框架。Spring主要⽤来开发Java应⽤,但是有些扩展是针对构建J2EE平台的web应⽤。...常见的配置⽅式有三种:基于XML的配置、基于注解的配置、基于Java的配置。

    ankang-report:report是一个开源程序的访问层中间件,基于java平台,依赖于spring,适用于现有大部分项目的接口测试。以及访问控制层的使用,简化控制层的繁琐代码,简化spring mvc的配置,替换了报告项目请求通道采用责任链模式设计,扩展性极强,流程完全可控!

    report是一个开源的访问层框架,基于java平台,依赖于spring,可用于接口的调试及性能的展示,以及访问控制层的使用,简化控制层的繁琐代码,简化spring mvc的配置,替换的请求前的各个操作,重组性低,REST风格的...

    模拟实现Spring中的注解装配

    在Spring 2.5以后出现了注解,使用注解结合XML的方式,简化了XML配置的复杂度。  老版本中纯XML配置实现IOC  在配置文件中配置如下:      &lt;bean id=userService class=...

    Spring的IoC容器(《Spring揭秘》的精选版)

    迷你书是《Spring揭秘》的精选版,节选了原书中介绍Spring IoC容器的6个章节。...5.4 多配置模块加载的简化 5.5 小结 Spring IoC容器之扩展篇 6.1 Spring 2.5的基于注解的依赖注入 6.2 Spring 3.0展望 6.3 小结

    spring4.0.zip

    Spring 是一个轻量级的开源框架, 为简化企业级应用开发而生 轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 依赖注入(DI — dependency injection、IOC) 面向切面编程...

    Spring Boot和Spring Security应用例子

    当构建一个安全的Web应用程序时,使用Spring Boot和Spring Security可以大大简化开发过程。以下是一个示例项目,展示了如何使用这些框架来实现基本的安全功能。 构建安全的Web应用程序:一个示例项目 1. 项目准备 ...

Global site tag (gtag.js) - Google Analytics