容器-spring

文章讲述了如何在Spring中创建和管理Bean,包括通过类路径或文件系统加载配置文件,以及通过不同方式获取Bean。此外,还对比了BeanFactory和ApplicationContext的区别,前者是延迟加载,后者则在初始化时创建Bean。文章还提到了bean的相关属性如id、name、class、scope等,以及依赖注入中的setter注入的重要性。
摘要由CSDN通过智能技术生成

创建容器

一: 类路径加载配置文件

 //1.加载类路径下的配置文件
       ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
       

二:文件路径加载配置文件

 //ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\\workspace\\spring\\spring_10_container\\src\\main\\resources\\applicationContext.xml");
     

三:加载多个配置文件

   ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml1","bean.xml2")");
       

获取bean

方式一:

 BookDao bookDao = (BookDao) ctx.getBean("bookDao");

方式二:

BookDao bookDao = ctx.getBean("bookDao",BookDao.class);

方式三:

BookDao bookDao = ctx.getBean(BookDao.class);

方式三就是依赖注入中的按类型注入

容器类层次结构

容器中的类是一层层叠加的,最上层父接口是beanfactory

beanfactory

使用beanfactory来创建ioc容器的具体实现方式:

public class AppForBeanFactory {
    public static void main(String[] args) {
        Resource resources = new ClassPathResource("applicationContext.xml");
        BeanFactory bf = new XmlBeanFactory(resources);
//        BookDao bookDao = bf.getBean(BookDao.class);
//        bookDao.save();
    }
}

beanfactory和applicationcontext的区别

public class BookDaoImpl implements BookDao {
    public BookDaoImpl() {
        System.out.println("constructor");
    }

    public void save() {
        System.out.println("book dao save ..." );
    }
}

beanfactory 是延迟加载,只有获取bean对象时才会创建bean对象

applicationcontext 是立即加载,加载时就会创建bean对象,可以加上懒加载

核心容器总结:

容器相关:

beanfactory是ioc容器的顶层接口,初始化beanfactory对象时,加载bean延迟加载

applicationcontext 接口是spring 容器的核心接口,初始化bean立即加载

applicationcontext 接口提供基础的bean操作相关方法,通过其他接口扩展其功能,常用的初始化类:

classpathxmlapplicationcontext,filesystemxmlapplicationcontext

bean相关:

id:bean的唯一标识

name: bean的别名

class:bean的类型,静态工厂类,factorybean类

scope:控制bean的实例数量

init-method:生命周期初始化

destroy-method:生命周期销毁方法

autowrite:自动装配类型

factory-method:bean工厂方法,应用于静态工厂或实例工厂

factory-bean:实例工厂bean

lazy-init 控制bean延迟加载

依赖注入相关

setter注入重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值