【Spring】【Bean的scope属性】【Bean的初始化和销毁方法】

Bean的scope属性

在Spring容器中的对象,默认是单例的.如dao,service.单例可以提高性能
但是也需要每次获取都要new一次Bean对象.如Struts2的 Action对象,每次页面请求,都需要一个性的Action对象.
解决方法:设置bean标签中的scope属性来设置bean的生命范围.

  • singleton:单例.默认的,这个应用只有就一个对象
  • prototype:原型模式,每次都会new一个新的对象,属于延迟加载,Spring容器启动不会创建该bean对象,Struts2的Action类使用该值
  • request:1次请求就是一个新的Bean.使用于SpringMVC
  • session:一次会话就是一个新的Bean,使用于SpringMVC
<bean id="employeeAction" class="全限名" scope="prototype"/>

Bean的初始化和销毁方法

  1. 的初始化和销毁方法都是Bean对象的类中声明的方法,
  2. init-method:初始化在Spring容器生成其对象时候调用.(高级查询对象就有需要初始化的方法)
  3. destroy-method:销毁方法在Spring容器关闭前调用.

User类

public class User {

    public void init() {
        System.out.println("创建对象");
    }

    public void dowork() {
        System.out.println("使用对象");
    }

    public void destory() {
        System.out.println("销毁对象");
    }
}

applicationContext.xml声明bean

<bean id="user" class="dao.impl.User" destroy-method="destory" init-method="init"/>

Spring的测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/applicationContext.xml")
public class MyTest {

    @Autowired
    private User user;

    @Test
    public void dowork() {
        user.dowork();//创建对象--使用对象---销毁对象

    }
}

普通的测试
1.用ClassPathXmlApplicationContext 接收,ApplicationContext是接口,没有关容器的方法.
2.最后需要容器.close();

public class MyTest {
    @Test
    public void dowork() throws InterruptedException {
        //启动容器 创建对象
        ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("/applicationContext.xml");
        Thread.sleep(2000);
        User  user = (User) ctx.getBean("user");
        user.dowork();//2秒后使用对象
        Thread.sleep(2000);
        ctx.close();//2秒后关闭容器 销毁对象
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值