spring关于bean标签的一些属性配置(2)

1. scope属性

  • singelon(默认)

xml配置文件中的bean:

<bean id="userDao" class="com.guazi.Dao.impl.UserDaoImpl" scope="singleton"></bean>

java代码

public class UserServiceImpl implements UserService {
    public static void main(String[] args){
//        加载xml配置文件
        ApplicationContext app=new ClassPathXmlApplicationContext("applicationContext.xml");
//        通过id标识获取类
        UserDao userDao1 = (UserDao) app.getBean("userDao");
        UserDao userDao2 = (UserDao) app.getBean("userDao");
//        实现类方法
        System.out.println(userDao1);
        System.out.println(userDao2);
    }
}

结果:

com.guazi.Dao.impl.UserDaoImpl@77a57272
com.guazi.Dao.impl.UserDaoImpl@77a57272
  • prototype

xml配置文件中的bean:

<bean id="userDao" class="com.guazi.Dao.impl.UserDaoImpl" scope="prototype"></bean>

java代码同上

结果:

com.guazi.Dao.impl.UserDaoImpl@70a9f84e
com.guazi.Dao.impl.UserDaoImpl@130f889

2. initial-method属性和destroy-method属性

指定类创建时就执行的方法;指定类销毁时就执行的方法

3. bean实例化的三种方法

  • 无参构造方法实例化(默认)

调用无参构造方法进行实例化

  • 工厂静态方法实例化

要先创建一个工厂
在这里插入图片描述

StaticFactory.java

package com.guazi.factory;
import com.guazi.Dao.UserDao;
import com.guazi.Dao.impl.UserDaoImpl;

public class StaticFactory {
    public static UserDao getUserDao(){
        return new UserDaoImpl();
    }
}

xml配置文件中的bean,类名改为工厂的名,然后再配上factory-method参数,由于是静态的构造方法,spring会直接去找factory-method中的方法构造类:

<bean id="userDao" class="com.guazi.factory.StaticFactory" factory-method="getUserDao"></bean>
  • 工厂动态方法实例化

DynamicFactory.java

package com.guazi.factory;

import com.guazi.Dao.UserDao;
import com.guazi.Dao.impl.UserDaoImpl;

public class DynamicFactory {
    public UserDao getUserDao(){
        return new UserDaoImpl();
    }
}

由于没有了static,在xml中需要先创建工厂的对象,然后再创建UserDao的对象:

<bean id="DynamicFactory" class="com.guazi.factory.DynamicFactory"></bean>
<bean id="userDao" factory-bean="DynamicFactory" factory-method="getUserDao"></bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值