Spring IoC容器的代表是org.springframework.beans包中的BeanFactory接口,org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,主要是再提供了与Spring AOP继承、国际化处理、时间传播及提供不同层次的context实现(如针对Web应用的WebApplicationContext)。
2.由IoC容器进行解析元数据,IoC根据BeanDefinition进行实例化、配置及组装Bean。
3.实例化IoC容器,由客户端实例化容器,获取需要的Bean。
一:不用id,只注明是哪个类
二:指定id,但必须在IoC容器中是唯一的
三:有name无id,name为标识符
四:有name有id,name为别名,id为标识符
五:有多个name,第一个为标识符,其余为别名,多个name用,、;分割。
IoC容器到底是怎么工作的呢?以xml来分析下
1.准备配置文件,配置文件中有Bean配置的元数据2.由IoC容器进行解析元数据,IoC根据BeanDefinition进行实例化、配置及组装Bean。
3.实例化IoC容器,由客户端实例化容器,获取需要的Bean。
一:不用id,只注明是哪个类
二:指定id,但必须在IoC容器中是唯一的
三:有name无id,name为标识符
四:有name有id,name为别名,id为标识符
五:有多个name,第一个为标识符,其余为别名,多个name用,、;分割。
另外在bean标签外可用<alias>标签来指定别名,别名唯一。
测试了一下用构造器来实例化Bean。
<bean id = "bye2" class = "cn.javass.spring.chapter2.helloworld.byeImpl"></bean>
在带参数的构造器,就得价格<constructor-arg>标签。index表示位置(参数滴),value表示值,如:
<bean id = "bye" class = "cn.javass.spring.chapter2.helloworld.byeImpl">
<constructor-arg index="0" value="Hello Spring!"/>
<constructor-arg index="1" value="21"/>
</bean>
还可以使用静态工厂方式去实例化Bean,这种方式的好处就在于,除了指定class属性,还能用factory-method属性去指定用哪个放方法来实例化Bean,并且这一样可以指定方法参数。
方式,写个xml,<bean id = "bean1" class = "abc" factory-method = "method1">