Bean标签:
Id:对象的唯一标识;
class:类的全路径;
scope:对象的生命周期,作用范围;
singleton:默认值,单实例对象。
prototype:多实例的,每次请求都重新创建。一般在从容器种获取时创建对象。
request: 多实例的,以一个http请求作为一个范围;
session:多实例的,以session为周期的范围;
实例化bean的三种方式:
1.默认的无参数构造函数
<bean id="us1" class="cn.test.UserServiceImpl">
2.静态工厂
<bean id="us2" class="cn.test.StaticFactory" factory-method="CreateInstance"/>
还需要添加静态工厂类代码
public static UserService CreateInstance() { return new UserServiceImpl(); }
3.实例化工厂方式
<bean id="usfactory" class="cn.test.InstanceFactory" />
<bean id="us3" factory-bean="usfactory" factory-method="GetInstance"/>
public class InstanceFactory { public UserService GetInstance() { return new UserServiceImpl(); } }
DI注入:
1.先配置依赖配置
<bean id="us1" class="cn.test.services.UserServiceImpl">
<property name="userDao" ref="ud1" />
--如果属性是值类型的,采用value赋初始值
<property name="msg" value="消息" />
</bean>
<bean id="ud1" class="cn.test.dao.UserDaoImpl" />
2.代码里面需要有Setter:
private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; }
另外一种是构造方法注入,采用
<bean id="us1" class="cn.test.services.UserServiceImpl">
<constructor-arg name="" value="" ref=""/>
</bean>