🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <!--把对象的创建交给spring来管理--> <!-- bean对象的生命周期 单例对象: 出生: 当容器创建时对象出生 活着: 只要容器还在,对象一直活着 死亡: 容器销毁,对象消亡 总结: 单例对象的生命周期和容器相同 多例对象: 出生: 当我们使用对象时spring框架为我们创建 活着: 对象只要是在使用过程中就一直活着 死亡: 当对象长时间不用,且没有别的对象引用时,由java的垃圾回收器回收 --> <bean id="accountService4" class="com.itheima.service.impl.AccountServiceImpl4" scope="singleton" init-method="init" destroy-method="destory"></bean> <!----> <!-- <bean id="accountService5" class="com.itheima.service.impl.AccountServiceImpl5" scope="prototype" init-method="init" destroy-method="destory"></bean>--> </beans> ~~~ ***** ~~~ package com.itheima.service.impl; import com.itheima.service.IAccountService; /** * @author: hcf * @qq: 46914685 * @email: 46914685@qq.com */ /** * 账户的业务层实现类 */ public class AccountServiceImpl4 implements IAccountService { //没有构造函数,所以采用第一种方式创建bean时会出错 // public AccountServiceImpl1(String name) { public AccountServiceImpl4() { System.out.println("对象创建了"); } public void saveAccount() { System.out.println("service中的saveAccount方法执行了!44444"); } public void init(){ System.out.println("对象初始化了..."); } public void destory(){ System.out.println("对象销毁了..."); } } ~~~ ***** ~~~ package com.itheima.service.impl; import com.itheima.service.IAccountService; /** * @author: hcf * @qq: 46914685 * @email: 46914685@qq.com */ /** * 账户的业务层实现类 */ public class AccountServiceImpl5 implements IAccountService { //没有构造函数,所以采用第一种方式创建bean时会出错 // public AccountServiceImpl1(String name) { public AccountServiceImpl5() { System.out.println("对象创建了55"); } public void saveAccount() { System.out.println("service中的saveAccount方法执行了!55555"); } public void init(){ System.out.println("对象初始化了55..."); } public void destory(){ System.out.println("对象销毁了55..."); } } ~~~ ***** ~~~ /** * 测试bean生命周期--单例对象生命周期 */ @Test public void testSingletonLifeCycle() { //1.获取核心容器对象 ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean2.xml"); //创建bean对象 IAccountService as = ac.getBean("accountService4", IAccountService.class); as.saveAccount(); //手动销毁容器 ac.close(); } /** * 测试bean生命周期--多例对象生命周期 */ @Test public void testPrototypeLifeCycle(){ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("bean2.xml"); IAccountService as = (IAccountService) ac.getBean("accountService5"); as.saveAccount(); ac.close(); } ~~~