bean的细节之三种创建方式:
<!-- 第一种方式:使用默认构造函数创建(空参构造函数) 在spring的配置文件中使用bean标签,配以id和calss属性之后,且没有其他属性和标签时。 采用的就是默认构造函数创建bean对象,如果类中没有默认构造函数,则对象无法创建 --> <bean id="accountService" class="com.study.service.impl.AccountServiceImpl" ></bean>
<!--第二种方式:使用普通工厂中的方法创建对象(使用某个类中的方法创建对象,并存入spring容器) --> //将工厂类存入spring容器 <bean id="userFactory" class="com.study.XX.XX.userFactory"></bean> //指定工厂类及方法,创建对象 ---- 用userFactory的getUser方法获取user <bean id="user" factroy-bean="userFactory" factory-method="getUser"></bean>
<!-- 第三种方式:使用工厂中的静态方法创建对象(使用某个类中的静态方法创建对象,并存入spring容器) --> //使用com.study.XX.XX.userFactory类中的静态方法staticGetUser创建user <bean id="user" class="com.study.XX.XX.userFactory" factory-method="staticGetUser"></bean>
bean的细节之作用范围
<!-- bean的作用范围调整 bean标签的scope属性: 作用:用于指定bean的作用范围 取值:常用的是单例和多例 singleton:单例(默认值) prototypr:多例 request:作用于web应用的请求范围 session: 作用于web应用的会话范围 global-session:作用于集群环境的会话范围(全局会话范围),如果不是集群环境,它就是session --> <bean id="userService" class="com.study.XX.UserService" scope="prototypr"></bean>
bean的细节之生命周期
<!-- bean的生命周期 单例对象: 出生:当容器创建时对象出生 活着:只要容器还在,对象就一直活着 死亡:容器销毁时,对象死亡 总结:单例对象的生命周期和容器相同 多例对象: 出生:当我们使用对象时spring容器为我们创建 活着:对象只要实在使用过程中就一直活着 死亡:当对象长时间不用,且没有别的对象引用时,由java的垃圾回收器回收