spring bean
-
spring的容器有BeanFactory和ApplicationContext两种 spring 用于管理javabean对象
-
AppliacationContext继承自BeanFactory,拥有更多的企业级方法推荐使用。
实例化://加载ClassPath下的配置文件实例化
```java
String conf =“applicationContext.xml”;
ApplicationContext ac = new ClassPathXmlApplicationContext(conf);
```如果是加载系统中的配置文件则是FileSystemXmlApplicationContext(conf);
- 注意:applicationcontext默认启动时将所有单列模式提前实例化,可以使用bean的lazy-init=true改变
-
实例化bean
- 通过构造器实例化bean
<bean id="obj1" class="java.util.GregorainCalendar/>"
- 通过静态工厂方法实例化
<bean id="obj2" class="java.util.Calendar" factory-method="getInstance"/>
- 通过实例工厂方法实例化
<bean id="obj3" class="java.util.GregorainCalendar"/>
<bean id="obj4" factory-bean="obj3" factory-method="getTime"/>
- 通过构造器实例化bean
-
bean的作用域:
<bean id="obj5" class="java.util.GregorainCalendar" scope="prototype/>"
-
bean的别名:
<alias name="fromname" alias="toname"/>
-
bean的生命周期:回调
destroy-method="destroy" init-method="init" lazy-init=true
!!!对应在顶级的里面写default-xxx-xxx来实现全部
-
bean之间的依赖关系用 depends-on
-
IOC控制反转,即由最初的new方式创建,转变为第三方框架创建和注入,IOC可分为依赖注入和依赖查找
而spring框架用的是依赖注入DI实现IOC控制。*这才是spring的核心
-
依赖注入:通过构造方法参数或者方法参数传入建立关联
-
DI注入有两种方式
-
setter注入
<bean id="computer"class="com.tarena.bean.Computer"> <property name="mainboard" value="技嘉"/> <property name="hdd" value="希捷"/> <property name="ram" value="金士顿"/> </bean>
-
构造器注入
<bean id="phone"class="com.tarena.bean.MobilePhone"> <constructor-arg index="0" value="ARM"/> <constructor-arg index="1" value="2G"/> </bean>
-
引用注入
<util:list id="langList"> <value>c++</value> <value>python</value> </util:list> <bean id="msg2" class="com.tarena.bean.MessageBean"> <property name="langs" ref="langList"/> <property name="cities" ref="citySet"/> <property name="score" ref="scoreMap"/> <property name="props" ref="paramProp"/> </bean>
-
-