Spring学习总结之---装配Bean】的更多相关文章

Spring配置的可选方案 前言:Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系,作为开发人员,你需要告诉Spring容器要创建那些Bean,以哪种方式创建,并且如何将这些bean装配在一起. 1.装配方式可选方案: 1-1:在XML中进行显示配置:在java中进行显示配置:隐式的bean发现机制和自动装配:可以使用互相搭配使用.备注:建议使用自动装配方式. 2.自动化装配:组件扫描(Spring会自动对发现组件类进行扫描并创建上下文bean):自动装配(Spri…
1.  XML中显式配置 规范,文件头: <?xml version=”1.0” encoding=”UTF-8”?>            <beans xmlns=http://www.springframework.org/schema/beans                     xmlns=http://www.w3.org/2001/XMLSchema-instance                     xsi:schemaLocation=”http://www…
Spring提供了四种类型的自动装配策略: byName – 把与Bean的属性具有相同名字(或者ID)的其他Bean自动装配到Bean的对应属性中. byType – 把与Bean的属性具有相同类型的其他Bean自动装配到Bean的对应属性中. constructor – 把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean的对应属性中. autodetect – 首先使用costructor进行自动装配.如果失败,再尝试使用byType进行自动装配. 我这里以关羽和青龙偃月刀…
主要内容: Environments and profiles Conditional bean declaration 处理自动装配的歧义 bean的作用域 The Spring Expression Language 在装配bean-依赖注入的本质一文中,我们探讨了Spring的三种管理bean的方式:自动装配.基于JavaConfig.基于XML文件.这篇文字将探讨一些Spring中关于bean的管理的高级知识,这些技能你可能不会每天都用,但是非常重要. 3.1 Environments…
主要内容 Spring的配置方法概览 自动装配bean 基于Java配置文件装配bean 控制bean的创建和销毁 任何一个成功的应用都是由多个为了实现某个业务目标而相互协作的组件构成的,这些组件必须相互了解.能够相互协作完成工作.例如,在一个在线购物系统中,订单管理组件需要与产品管理组件以及信用卡认证组件协作:这些组件还需要跟数据库组件协作从而进行数据库读写操作. 在Spring应用中,对象无需自己负责查找或者创建与其关联的其他对象,由容器负责将创建各个对象,并创建各个对象之间的依赖关系.例如…
IOC装配Bean(注解方式) 上面一遍文章讲了通过xml来装配Bean,那么这篇来讲注解方式来讲装配Bean对象 注解方式需要在原先的基础上重新配置环境: (1)Component标签举例 1:导入架包: 这个包在spring开发包中就有,我测试了下,如果取消这个包,运行确实会报错: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document…
自动装配 1.歧义性 我们知道用@Autowired可以对bean进行注入(按照type注入),但如果有两个相同类型的bean在IOC容器中注册了,要怎么去区分对哪一个Bean进行注入呢? 如下情况,若用@Autowired的方式按类型注入,IOC容器就不知道应该注入哪个了: <bean name="source1" class="pojo.Source"> <property name="fruit" value="…
一.bean的作用域 在默认情况下,Spring应用上下文中所有bean都是作为以单例(singleton)的形式创建的.也就是说,不管给定的一个bean被注入到其他bean多少次,每次所注入的都是同一个实例.如果你所使用的类是易变的(mutable),它们会保持一些状态,因此重用是不安全的.在这种情况下,将class声明为单例的bean就不是什么好主意了,因为对象会被污染,稍后重用的时候会出现意想不到的问题. 1.Spring定义了多种作用域,可以基于这些作用域创建bean,包括: 单例(Si…
通过注解装配 Bean 1.前言 优势 1.可以减少 XML 的配置,当配置项多的时候,XML配置过多会导致项目臃肿难以维护 2.功能更加强大,既能实现 XML 的功能,也提供了自动装配的功能,采用了自动装配后,程序猿所需要做的决断就少了,更加有利于对程序的开发,这就是"约定优于配置"的开发原则 IOC发现Bean的两种方式 组件扫描:通过定义资源的方式,让 Spring IoC 容器扫描对应的包,从而把 bean 装配进来. 自动装配:通过注解定义,使得一些依赖关系可以通过注解完成.…
一.配置Bean的方式及选择 配置方式 在 XML 文件中显式配置 在 Java 的接口和类中实现配置 隐式 Bean 的发现机制和自动装配原则 方式选择的原则 最优先:通过隐式 Bean 的发现机制和自动装配的原则. 基于约定优于配置的原则,这种方式应该是最优先的 好处:减少程序开发者的决定权,简单又不失灵活. 其次:Java 接口和类中配置实现配置 在没有办法使用自动装配原则的情况下应该优先考虑此类方法 好处:避免 XML 配置的泛滥,也更为容易. 典型场景:一个父类有多个子类,比如学生类有…
前言: 当讨论依赖注入的时候,我们通常所讨论的是将一个bean引用注入到另一个bean的属性或构造器参数中.bean装配的另外一个方面指的是将一个值注入到bean的属性或者构造器参数中.在没有学习使用怎么注入外部值时,我们正常是直接将值写死在代码中.如将专辑的名字装配到BlankDisc bean的构造器或title属性中. 例如,我们可能按照这样的方式来组装BlankDisc: 如果使用XML的话,那么值也会是硬编码的:  如果我们可能会希望避免硬编码值,而是想让这些值在运行时再确定.为了实现…
前言: 在上一章装配Bean中,我们看到了一些最为核心的bean装配技术.你可能会发现上一章学到的知识有很大的用处.但是,bean装配所涉及的领域并不仅仅局限于上一章 所学习到的内容.Spring提供了多种技巧,借助它们可以实现更为高级的bean装配功能.在本章中,我们将会深入介绍一些这样的高级技术. 使用情景: 在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁移到另外一个环境.开发阶段中,某些环境相关做法可能并不适合迁移到生产环境中,甚至即便迁移过去也无法正常工作.数据库配置.加密…
下文:SpringIOC 二-- 容器 和 Bean的深入理解 写在前面 这篇文章去年写的,缘起于去年某段时间被领导临时"抓壮丁"般的叫过去做java开发,然后在网上找了一个 SpringMVC 的 demo,学习一下,然后依葫芦画瓢,开始了自己的项目开发,也还顺利完成了任务.在使用 SpringMVC 的过程中,我被这个被称作"最优秀"的 java 框架 -- Spring 深深地吸引了,那些曾经掌握的多种设计模式的思想在其中都有实现,比如工厂模式.单例模式.观察…
一.Spring profile 在开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁 移到另外一个环境.开发阶段中,某些环境相关做法可能并不适合迁 移到生产环境中,甚至即便迁移过去也无法正常工作.数据库配置. 加密算法以及与外部系统的集成是跨环境部署时会发生变化的几个典 型例子.例--配置profile bean Spring为环境相关的bean所提供的解决方案其实与构建时的方案没有 太大的差别.当然,在这个过程中需要根据环境决定该创建哪个bean 和不创建哪个bean.不过Sprin…
在上一篇控制反转中我们看到了依靠一个Bean文件来实现对代码的控制,可谓十分便捷,再也不用去实例化对象了,2333~~~ 1.手动装配 <bean id="todo" class="com.eco.daoimp.Usertodo1"></bean> <!--定义Userservice类内部接口的引用(userdao)指向具体的实现类对象(Usertodo1) --> <bean id="userservice&qu…
我们已经看到如何使用自动装配让Spring完全负责将bean引用注入到构造参数和属性中.自动装配能够提供很大的帮助.不过,spring容器中仅有一个bean匹配所需的结果时,自动装配才是有效的.如果不仅有一个bean能够匹配结果的话,Spring此时别无他法,只好宣告失败并抛出异常.更精确地讲,Spring会抛出NoUniqueBeanDefinitionException. 当确实发生歧义性时,Spring提供了多种可选方案来解决这样的问题.你可以将可选bean中的某一个设为首选(primar…
IOC装配Bean (1)Spring框架Bean实例化的方式提供了三种方式实例化Bean 构造方法实例化(默认无参数,用的最多) 静态工厂实例化 实例工厂实例化 下面先写这三种方法的applicationContext.xml配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"…
1. 背景 书接上文Spring自动化装配bean 尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化扫描配置是更为推荐的方式,但在有些情况下自动化扫描的方案行不通,如想要将第三方库中的组件装配到自己的应用中.在这种情况下必须通过显示 装配的方式. 显示装配有两种可选方案:Java和XML.JavaConfig是更好的方案:更强大.类型安全并对重构友好.因他就是Java代码. 2. 代码 & 解说 接口: CompactDisc.java package soundsystem; p…
概述 本文介绍的Spring 中bean的作用域. 问题 : bean的作用域有几种,有那些应用场景 bean 装配过程 下图为bean在容器中从创建到销毁的若干阶段. bean 作用域 作用域介绍 下面的表格显示的就是bean的作用域,其中单例模式(singleton)下是bean 默认的作用域:prototype 确定一个类,衍生出多个实例.request 和 session 和 http 请求有关:application 的作用域和 ServletContext 有关. 下面展示的是 si…
使用XML装配Bean需要定义对于的XML,需要引入对应的XML模式(XSD)文件,这些文件会定义配置Spring Bean的一些元素,简单的配置如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XM…
组件装配: <context:component-sacan> 元素还会自动注册 AutowiredAnnotationBeanPostProcesser 实例 , 该实例可以自动装配具有 @Autowired 和 @Resource . @Inject 注解的属性. 使用 @Autowired 自动装配 Bean: @Autowired 注解自动装配具有兼容类型的单个 Bean 属性: 构造器 , 普通字段(即使是非 public) , 一切具有参数的方法都可以用 @Autowired 注解…
学习Spring时,我用的是Maven来管理jar包,先看看maven的pom.xml: pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.ap…
装配(wiring):创建应用对象之间协作关系的行为.这是依赖注入的本质. Spring配置的可选方案 Spring提供了三种装配机智: 1)在XML中进行显示装配 2)在java中进行显示装配 3)隐式Bean发现机制和自动装配 自动化装配 Spring从两个角度来实现自动化装配: 1)组件扫描(component scanning):Spring会自动发现应用上下文中所创建的bean. 2)自动装配(autowiring):Spring自动满足bean之间的依赖. 创建可被发现的bean 案…
主要内容: ●Spring profile ●条件化的bean声明 ●自动装配与歧义性 ● Spring表达式语言 本章介绍一些高级的装配技术,可实现更为高级的装配功能. 环境与profile 软件开发时,有一个很大的挑战就是讲应用程序从一个环境迁移到另外一个环境,开发环境可能并不适合迁移到生产环境,比如:数据库配置.加密算法以及外部系统的集成可能会发生变化. 比如数据库配置: ● 在开发环境中可能使用的是嵌入式数据库,并预先加载测试数据,bean配置类可能会在一个带有@Bean注解的方法上使用…
Spring IOC 容器可以管理 bean 的生命周期 , Spring 允许在 bean 声明周期的特定点执行定制的任务. Spring IOC 容器对 bean 的生命周期进行管理的过程: 通过构造器或者工厂方法创建 bean 实例. 为 bean 的属性赋值和对其他 bean 的引用. 调用 bean 的初始化方法. bean 初始成功,可以使用. 容器关闭时 , 调用 bean 的销毁方法. 在 bean 的声明里设置 init-method 和 destroy-method 属性 ,…
Bean配置项 Bean的作用域 Bean的生命周期 Bean的自动装配 Resources & ResourceLoader (一) Bean配置项 常用的配置项 Id   (IOC容器中Bean的唯一标识) Class    (具体要实例化的类) (必须要有的) Scope    (Bean的作用域) Constructor arguments  (构造器的参数) Properties  (属性) Autowiring mode  (自动装配模式) lazy-initialzation mo…
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6775827.html  一:如何使用Spring获取对象 1:定义bean类:要按照注入方式来定义对应的bean格式 2:在配置文件中注册bean 3:在代码中获取bean对象 二:配置文件中的bean标签配置项 其中: 1:id和class是必须的,定义了注册的bean在Spring容器中的ID和完整的类定义路径. 2:Scope是该bean对象的作用域,主要有: 3:constructor-arg配置构…
一.spring Ioc容器补充(1) Spring Ioc容器 DI(依赖注入): 注入的方式:设值方法注入setter(属性注入)/构造子注入(构造函数传入依赖的对象)/字段注入field(注解)/接口注入out 装配的方式:手动装配<property>,<constructor-arg>,@Autowired,@Resource/自动装配 1.装配各种类型的属性: A.简单属性value属性或者value元素 <bean id="person" cl…
1.关于 使用传统标签还是 c- p- 命名空间定义的标签, 我的观点是能用  c- p- 命名空间定义的标签 就不用 传统标签(这样会比较简洁... 2.强依赖使用构造器注入,可选性依赖使用属性注入. [ bean 的初始化] <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmln…
Bean管理的注解实现 Classpath扫描与组件管理 类的自动检测与注册Bean <context:annotation-config/> @Component,@Repository,@Service,@Controller 以下单独讲解: @Required @Autowired @Qualifier @Resource (一) Classpath扫描与组件管理 从Spring3.0开始,Spring javaConfig项目提供了很多特性,包括使用java而不是xml定义bean,比…