在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实战(第三版)的学习笔记
相关推荐
在这篇文章里对于SpringXML配置我将向你展示12种比较好实战其中些实战不仅是好实战更是必要实战除 此以外还有其他原因例如领域模型设计都能影响XML配置但是这篇文章重点研究XML配置易读性和易管理性
Java SSM项目是一种使用Java语言和SSM框架(Spring + Spring MVC + MyBatis)开发的Web应用程序。SSM是一种常用的Java开发框架组合,它结合了Spring框架、Spring MVC框架和MyBatis框架的优点,能够快速构建可靠、...
Spring Boot是一个开源的Java框架,旨在简化Spring应用的初始搭建和开发过程。以下是对Spring Boot开发的500字资源介绍: Spring Boot由Pivotal团队提供,它集成了众多常用的Spring功能,并进行了大量默认配置,使...
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是简化新 Spring 应用的初始搭建... properties 配置文件,避免了烦琐而且容易出错的 XML配置文件,极大地简化了基于 Spring 框架的企业级应用开发的配置。
开发人员可以通过简单的注解或XML配置来覆盖这些默认配置,而不需要手动编写大量的配置代码。 创建独立的应用程序:Spring Boot可以创建独立的应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs。...
spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域...spring-5 演示了声明式事务及使用xml配置文件处理事务
配置与注解:理解Spring的XML配置和注解配置,并能够在这两种配置方式中进行选择。 Spring AOP与AspectJ:理解Spring AOP的概念,以及如何使用AspectJ实现AOP。 Spring与其它技术集成:了解Spring与其它技术的集成,...
抛弃传统spring xml的配置方式,利用springboot + javabean方式配置spring,极大简化了pom.xml配置和spring配置. Guns项目代码简洁,注释丰富,上手容易,同时Guns包含许多基础模块(用户管理,角色管理,部门管理,字典管理...
(2)在 web.xml 文件中配置 Spring mvc 的前端控制器 (3)创建一个 spring mvc 的配置文件 (4)在 spring mvc 的配置文件中进行相关配置 1) 配置注解扫描路径 2)配置处理器映射器 3)配置处理器...
XML Schema的支持和自定义命名空间的使用大大减少了基于XML的配置。使用Java5及更新版本java的开发人员如今可以利用植入了像泛型(generic)和注解等新语言特性的Spring库。最近,和AspectJ表达式语言的紧密集成,...
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建、运行、调试、部署等。使用Spring Boot可以做到专注于Spring应用的开发,而无需过多关注XML的配置。Spring Boot使用“习惯优于...
Spring Boot 中的 pom.xml 文件是项目使用 Maven 构建工具时的配置文件。此文件定义了项目的依赖项、插件和构建行为。通常,pom.xml 包括以下内容: ...这些配置有助于简化 Spring Boot 项目的搭建和构建。
编写Spring核心配置文件spring.xml 在程序中读取Spring 配置文件,通过Spring框架获得Bean,完成相应的操作 在上面是我们的开发流程,我们第一步一般都是导入所需jar包,但由于刚开始时根本不知道该在什么时候用到...
Spring Boot 的主要优点: 为所有 Spring开发者更快的入门 开箱即用,提供各种默认配置来简化项目配置 内嵌式容器简化 Web 项目 没有冗余代码生成和 XML 配置的要求 简言之,Spring Boot 是一个快速开发的框架,能够...
spring面试题 Spring 是个java企业级应⽤的开源开发框架。Spring主要⽤来开发Java应⽤,但是有些扩展是针对构建J2EE平台的web应⽤。...常见的配置⽅式有三种:基于XML的配置、基于注解的配置、基于Java的配置。
report是一个开源的访问层框架,基于java平台,依赖于spring,可用于接口的调试及性能的展示,以及访问控制层的使用,简化控制层的繁琐代码,简化spring mvc的配置,替换的请求前的各个操作,重组性低,REST风格的...
在Spring 2.5以后出现了注解,使用注解结合XML的方式,简化了XML配置的复杂度。 老版本中纯XML配置实现IOC 在配置文件中配置如下: <bean id=userService class=...
迷你书是《Spring揭秘》的精选版,节选了原书中介绍Spring IoC容器的6个章节。...5.4 多配置模块加载的简化 5.5 小结 Spring IoC容器之扩展篇 6.1 Spring 2.5的基于注解的依赖注入 6.2 Spring 3.0展望 6.3 小结
Spring 是一个轻量级的开源框架, 为简化企业级应用开发而生 轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 依赖注入(DI — dependency injection、IOC) 面向切面编程...
当构建一个安全的Web应用程序时,使用Spring Boot和Spring Security可以大大简化开发过程。以下是一个示例项目,展示了如何使用这些框架来实现基本的安全功能。 构建安全的Web应用程序:一个示例项目 1. 项目准备 ...