Spring IoC基础

一:
beans.xml:定义需要实例化对象的全限定类名以及对象之间的依赖关系
beanFactory:通过反射技术来实例化对象并且维护对象之间的依赖关系
bean的定义存在三种模式:
1.纯注解模式(bean信息定义全部配置在xml中)
2.xml+注解模式
3.纯注解模式
三种定义模式对应IOC的启动方式:
1&2在JavaSE应用下通过ApplicationContext applicationContext=new ClassPathXmlApplicationContext(“beans.xml”)或new FileSystemXmlApplicationContext(“c:/beans.xml”)
在JavaWeb应用下通过监听器去加载xml(ContextLoaderListener)
3在JavaSE应用下通过ApplicationContext applicationContext=AnnotationConfigApplicationContext (SpringConfig.class)
在JavaWeb应用下通过监听器去加载配置类(ContextLoaderListener)
二:
BeanFactory与ApplicationContext区别
BeanFactory是Spring框架中IoC容器的顶层接⼝,定义⼀些基础功能,定义⼀些基础规范
ApplicationContext是BeanFactory的⼀个⼦接⼝,具备BeanFactory提供的全部功能
通常,我们称BeanFactory为SpringIOC的基础容器,ApplicationContext是容器的⾼级接⼝,⽐BeanFactory要拥有更多的功能,⽐如说国际化⽀持和资源访问(xml,java配置类)等
三:
实例化Bean的三种⽅式:
1.使⽤⽆参构造函数


2.使⽤静态⽅法创建


3.使⽤实例化⽅法创建


四:
1.实际企业开发中,纯xml模式使⽤已经很少了,大多会用xml+注解结合模式,这样xml⽂件依然存在,所以,spring IOC容器的启动仍然从加载xml开始,至于哪些bean的定义写在xml中,哪些bean的定义使⽤注解,一般第三⽅jar中的bean定义在xml,⽐如druid数据库连接池
⾃⼰开发的bean定义使⽤注解
五:

  1. lazy-Init 延迟加载应用场景:
    (1)开启延迟加载⼀定程度提⾼容器启动和运转性能(效果不明显)
    (2)对于不常使⽤的 Bean 设置延迟加载,这样偶尔使⽤的时候再加载,不必要从⼀开始该 Bean 就占⽤资源
    六:
    后置处理器:
    Spring提供了两种后处理bean的扩展接⼝,分别为 BeanPostProcessor 和
    BeanFactoryPostProcessor,两者在使⽤上是有所区别的。
    ⼯⼚初始化(BeanFactory)—> Bean对象
    在BeanFactory初始化之后可以使⽤BeanFactoryPostProcessor进⾏后置处理做⼀些事情
    在Bean对象实例化(并不是Bean的整个⽣命周期完成)之后可以使⽤BeanPostProcessor进⾏后置处
    理做⼀些事情
    注意:对象不⼀定是springbean,⽽springbean⼀定是个对象
    BeanPostProcessor:BeanPostProcessor是针对Bean级别的处理,可以针对某个具体的Bean
    在这里插入图片描述
    该接⼝提供了两个⽅法,分别在Bean的初始化⽅法前和初始化⽅法后执⾏,具体这个初始化⽅法指的是
    什么⽅法,类似我们在定义bean时,定义了init-method所指定的⽅法
    定义⼀个类实现了BeanPostProcessor,默认是会对整个Spring容器中所有的bean进⾏处理。如果要对
    具体的某个bean处理,可以通过⽅法参数判断,两个类型参数分别为Object和String,第⼀个参数是每
    个bean的实例,第⼆个参数是每个bean的name或者id属性的值。所以我们可以通过第⼆个参数,来判
    断我们将要处理的具体的bean。
    注意:处理是发⽣在Spring容器的实例化和依赖注⼊之后。
    BeanFactoryPostProcessor:BeanFactory级别的处理,是针对整个Bean的⼯⼚进⾏处理,典型应⽤:PropertyPlaceholderConfigurer
    在这里插入图片描述
    注意:调⽤ BeanFactoryPostProcessor ⽅法时,这时候bean还没有实例化,此时 bean 刚被解析成
    BeanDefinition对象
    七:
    @Component 和 @Bean 的区别:
    Spring帮助我们管理Bean分为两个部分,一个是注册Bean,一个装配Bean。
    完成这两个动作有三种方式,一种是使用自动配置的方式、一种是使用JavaConfig的方式,一种就是使用XML配置的方式。
    1.@Compent 作用就相当于 XML配置
    2.@Bean 需要在配置类中使用,即类上需要加上@Configuration注解
    3.如果你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component注解的,因此就不能使用自动化装配的方案了,但是我们可以使用@Bean,当然也可以使用XML配置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值