Spring学习笔记之Bean的实例化
一、bean的实例化方法有3种,
1、构造器实例化
2、静态工厂方法实例化
3、实例工厂方法实例化
二、用构造器来实例化
<bean id="ShunDao" class="test.FTPDAO" >
id或者name用于指定bean的名称,class用于指定bean的类型
三、静态工厂方法实例化
<bean id="ShunDao" class="test.FTPDAO" factory-method="getInstance">
factory-method用于指定工厂中创建Bean对象的方法,必须static
四、实例工厂方法实例化
<bean id="cal1" class="java.util.Calendar" factory-method="getInstance"></bean>
<bean id="cal3" class="java.util.Date" factory-bean="cal1" factory-method="getTime"></bean>
------------------------------------>>>>>>>>>>>>>>>>>>>>>>>>>>
1、命名bean
每个bean都有一个或者多个的的标识符。这些标识符必须在加载他们的容器里边唯一。一个bean经常有且只有一个标识符,但是如果需要超过一个的名字,可以考虑额外的别名。
基于xml的配置源文件,你可以使用id或者name属性去指定bean的标识符,这里有个问题,如果是名字和ID的不一致,内部又是如何处理的?
如果你不想再另外再给他们定义一个别名,你可以指定name属性,利用逗号(,),分号(;)或者空格。spring3.1以前id属性是xsd:ID类型的,这个是唯一的,3.1以后,xml文件是xsd:string这个xml文件不校验,但是spring需要它唯一。
如果一个bean没有明确指定ID或者name,容器将为bean生成一个唯一的名字。但是,如果你想用ref来引用,就必须定义一个名字。
Motivations for not supplying a name are related to using inner beans and autowiring collaborators.
这句话怎么理解??!!!!!!!!
Bean 命名约定,和java一样,用一个小写字符,驼峰式
在一个bean的定义里边,你可以给bean起多于一个的名字,一个ID,多个名字,名字name和别名alias是等价的
2、
Instantiating beans
A bean definition essentially is a recipe for creating one or more objects. The container looks at the recipe for a named bean when asked, and uses the configuration metadata encapsulated by that bean definition to create (or acquire) an actual object.
If you use XML-based configuration metadata, you specify the type (or class) of object that is to be instantiated in the
.
Within the container itself, these bean definitions are represented as BeanDefinition objects, which contain (among other information) the following metadata:
A package-qualified class name: typically the actual implementation class of the bean being defined.
Bean behavioral configuration elements, which state how the bean should behave in the container (scope, lifecycle callbacks, and so forth).
References to other beans that are needed for the bean to do its work; these references are also called collaborators or dependencies.
合作和依赖有什么区别?
Other configuration settings to set in the newly created object, for example, the number of connections to use in a bean that manages a connection pool, or the size limit of the pool.
This metadata translates to a set of properties that make up each bean definition.
Table 5.1. The bean definition
Property
class Instantiating beans
name Naming beans
scope Bean scopes
constructor arguments Dependency injection
properties Dependency injection
autowiring mode Autowiring collaborators
lazy-initialization mode Lazy-initialized beans
initialization method Initialization callbacks
destruction method Destruction callbacks
In addition to bean definitions that contain information on how to create a specific bean, the ApplicationContext implementations also permit the registration of existing objects that are created outside the container, by users. This is done by accessing the ApplicationContext’s BeanFactory via the method getBeanFactory() which returns the BeanFactory implementation DefaultListableBeanFactory. DefaultListableBeanFactory supports this registration through the methods registerSingleton(..) and registerBeanDefinition(..). However, typical applications work solely with beans defined through metadata bean definitions.
Spring学习笔记之Bean的实例化的更多相关文章
- Spring学习笔记——02 Bean的命名及实例化
一.Bean的命名 前一篇讲到IoC是一个管理Bean的容器,Bean多数情况下都是通过XML文件进行配置的,其中Bean的命名有以下几种方式,现在梳理一下. 1. 不指定id,只配置类名 <b ...
- Spring学习笔记(3)——Bean的注入方式
依赖注入 依赖注入支持属性注入.构造函数注入.工厂注入. 属性注入: 属性注入即通过setXxx()方法注入Bean的属性值或依赖对象 属性注入要求Bean提供一个默认的构造函数(无参构造函数),并为 ...
- Spring学习笔记—装配Bean
在Spring中,对象无需自己负责查找或创建与其关联的其他对象.相反,容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入的本质. ...
- spring学习笔记之---bean管理
bean管理(xml) (一)spring的工厂类 FileSystemXmlApplicationContext 读取磁盘配置文件 (二)bean实例化的三种方式 (1)使用类构造器实例化(默认无参 ...
- Spring学习笔记(2)——Bean的配置
要使应用程序中的Spring容器成功启动,需要以下三个方面的条件都具备: 1.Spring框架的类包都已经放到应用程序的类路径下 2.应用程序为Spring提供完备的Bean配置信息 3.Bean的类 ...
- Spring学习笔记之bean配置
1.命名bean 每个bean都有一个或者多个的的标识符.这些标识符必须在加载他们的容器里边唯一.一个bean经常有且只有一个标识符,但是如果需要超过一个的名字,可以考虑额外的别名. 基于xml的配置 ...
- Spring学习笔记--注入Bean属性
这里通过一个MoonlightPoet类来演示了注入Bean属性property的效果. package com.moonlit.myspring; import java.util.List; im ...
- spring学习笔记之---bean属性注入
bean属性注入 (一)构造方法的属性注入 1.Student.java package entity; public class Student { private String name; pri ...
- spring学习笔记之---bean管理的注解方式
bean管理的注解方式 (一)使用注解定义bean (1)常用注解 (2)实例 1.在pom.xml中进行配置 <dependencies> <dependency> < ...
随机推荐
- Selected SVN connector library is not available or cannot be loaded
1.错误描述 The following data will be sent: ------ STATUS ------ pluginId org.eclipse.team.sv ...
- java实现数据库连接池
package com.kyo.connection; import java.sql.Connection; import java.sql.DatabaseMetaData; import jav ...
- 转载 - LINUX下查看CPU使用率的命令
几个常用的命令,一些不错的解释 http://blog.csdn.net/wengpingbo/article/details/6302058 1.top 使用权限:所有使用者 使用方式:top [- ...
- Hello,Akka
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/dreamhead-logs/235916459.html 只要稍微了解过一些Scala, ...
- stdlib标准库的常用API
iOS 有如下四种随机数方法,下面以产生 [0,100) 的随机数为例: 1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % ...
- php学习记录 易混淆
1.echo和print的区别 PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以 ...
- django在pyhton2.7 和 python3.* 之间代码和睦相处的方法
“祥”龙第一掌: from __future__ import unicode_literals from django.utils.encoding import python_2_unicode_ ...
- 深入理解React(二) —— 数据流和事件原理
版权声明:本文由左明原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/158 来源:腾云阁 https://www.qclou ...
- 根据不同的屏幕宽度引入不同的css文件
<link rel="stylesheet" href="css/jl_public.css?v=11"/> <link rel=" ...
- 初始hibernate(一)
Hibernate(开放源代码的对象关系映射框架) Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的or ...