Spring学习笔记(一)- Bean基础配置/实例化/生命周期

Spring学习笔记(一) - Bean 配置/实例化/生命周期

Bean 配置方法

Bean 别名配置

在这里插入图片描述

Bean 作用范围配置

在这里插入图片描述

【注解】:

  • Bean适合交给容器进行管理的bean:表现层对象;业务层对象;数据层对象;工具层对象;
  • Bean不适合交给容器进行管理的bean:封装实体的域对象

Bean 实例化

构造方法(常用)

  • 提供可访问的构造方法(注意必须是无参构造函数

    public class BookDaoImpl implements BookDao {
    
        public BookDaoImpl() {
            System.out.println("book dao constructor is running ....");
        }
    
        public void save() {
            System.out.println("book dao save ...");
        }
    }
    
  • 配置

    <bean id="bookDao class="com.itheima.dao.impl.BookImpl"/>
    

静态工厂(了解)

  • 静态工厂

    public class OrderDaoFactory {
        public static OrderDao getOrderDao(){
            System.out.println("factory setup....");
            return new OrderDaoImpl();
        }
    }
    
  • 配置:注意要初始化的是静态工厂类,要实例化orderDao必须要调用静态工厂实例化orderDao的函数

    <bean id="orderDao" class="com.itheima.factory.OrderDaoFactory" factory-method="getOrderDao"/>
    

实例工厂

  • 实例工厂

    public class UserDaoFactory {
    	public UserDao getUserDao(){
    		return new UserDaoImpl();
    	}
    }
    
  • 配置

    <bean id="userFactory" class="com.itheima.factory.UserDaoFactory"/>
    <bean id="userDao" factory-method="getUserDao" factory-bean="userFactory"/>
    

FactoryBean(超级重点:在SpringBoot整合开发中常用)

  • FactoryBean

    public class UserDaoFactoryBean implements FactoryBean<UserDao> {
    	public UserDao getObject() throws Exception {
    		return new UserDaoImpl();
    	}
    	
    	public Class<?> getObjectType() {
    		return UserDao.class;
    	}
    }
    
  • 配置

    <bean id="userDao" class="com.itheima.factory.UserDaoFactoryBean"/>
    

Bean 生命周期

  • 初始化Bean的时机是调用 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  • 销毁Bean的时机是出现
    第一种方法(这是一种强行关闭的方法):ctx.close();
    第二种方法(代码执行完毕之后调用销毁函数):ctx.registerShutdownHook();

方法1:提供生命周期控制方法

  • 提供生命周期控制方法

    public class BookDaoImpl implements BookDao {
    	
    	public void save(){
    		System.out.println("book dao save...");
    	}
    	
    	public void init(){
    		System.out.println("book init...");
    	}
    	
    	public void destroy(){
    		System.out.println("book destroy...");
    	}
    }
    
  • 配置生命周期控制方法

    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy"/>
    

方法2:接口控制

  • 实现InitializingBean,DisposableBean接口
    public class BookServiceImpl implements BookService,InitializingBean,DisposableBean {
    	public void save(){
    		System.out.println("book service save...");
    	}
    	
    	public void afterPropertiesSet() throws Exception {
    		System.out.println("book service init...");
    	}
    	
    	public void destroy() throws Exception {
    		System.out.println("book service destroy...");
    	}
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值