Spring配置文件

3.1 Bean标签基本配置

用于配置对象交由Spring来创建。
默认情况下它调用类中的无参构造函数,没有无参构造函数则创无法创建成功。

基本属性
id: Bean实例在Spring容器中的唯一标识
class: Bean的全限定名称
 

3.2 Bean标签范围配置

scope: 指对象的作用范围,取值如下:

取值范围说明
singleton默认值,单例的
prototype

多例的

<bean id="userDao" class="com.dao.impl.UserDaolmpl" scope="singleton"></bean>
<bean id="userDao" class="com.dao.impl.UserDaolmpl" scope="prototype"></bean>
<Bean ID=“唯一的标识” class=“类的全限定名” scope=“单例或多例”>
 1. 当scope的取值为singleton时

   Bean的生命周期:

                        对象创建:当应用被加载时,创建容器时,对象被创建了

                        对象运行:当容器在对象一直活着

                        对象销毁:当应用卸载,销毁容器时,对象就被销毁了

2. 当scope的取值为prototype时

                Bean的实例化时机:当调用getBean()方法实例化Bean

                        对象创建:当使用对象时,创建新的对象实例化

                        对象运行:只要对象在使用中就一直存在

                        对象销毁:当对象长时间不用就会被java垃圾回收站自动回收

3.3  Bean生命周期配置

        init-method:指定类中的初始化方法

        destroy-method:指定类中的销毁方法

案例:

3.3.1 创建一个接口

public interface UserDao {
    public void save();
}

3.3.2 创建一个实现类(UserDaolmpl)

 public void init() {
        System.out.println("初始化方法....");
    }

    public void destory() {
        System.out.println("销毁方法....");
    }

3.3.3  配置Bean(applicationContext.xml)

<bean id="userDao" class="com.dao.impl.UserDaolmpl" init-method="init" destroy-method="destory"></bean>

3.3.4 测试类(UserDaoDemo)

  public static void main(String[] args) {
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) app.getBean("userDao");
        userDao.save();
        app.close();
    }

运行结果 

UserDaoImp创建....
初始化方法....
com.dao.impl.UserDaolmpl@6f195bc3
销毁方法....

3.4 Bean实例化三种方式

默认无参的构造器实例化


静态工厂方法实例化

//接口
 public void save();

//实现接口
public void save() {
        System.out.printf("sava running....");
    }

//工厂
public class StaticFactory {
    public static UserDao getUserDao(){
        return new UserDaolmpl();
    }
//配置Bean
<bean id="userDao" class="com.facory.StaticFactory" factory-method="getUserDao"></bean>

//实现接口
 public static void main(String[] args) {
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao1 = (UserDao) app.getBean("userDao");
        use

实例工厂方法实例化

//接口
 public void save();

//实现接口
public void save() {
        System.out.printf("sava running....");
    }

//工厂
public class StaticFactory {
    public static UserDao getUserDao(){
        return new UserDaolmpl();
    }
//配置Bean
 <bean id="factory" class="com.facory.DynamicFatory"></bean>
 <bean id="userDao" factory-bean="factory" factory-method="getUserDao"></bean>

//实现接口
 public static void main(String[] args) {
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao1 = (UserDao) app.getBean("userDao");
        use

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值