java spring factory,【java开发Spring篇】之理解Spring容器、BeanFactory和ApplicationContext...

前言:java后台开发中Spring是个绕不去的坎,此文章仅代表鄙人的总结和理解,如有错漏,欢迎指正...

一、spring容器理解

Spring容器可以理解为生产对象(OBJECT)的地方,在这里容器不只是帮我们创建了对象那么简单,它负责了对象的整个生命周期--创建、装配、销毁。而这里对象的创建管理的控制权都交给了Spring容器,所以这是一种控制权的反转,称为IOC容器,而这里IOC容器不只是Spring才有,很多框架也都有该技术。

二、BeanFactory和ApplicationContext之间的关系

Spring的两大核心接口:BeanFactory和ApplicationContext

1)ApplicationContext是BeanFactory的子接口,最主要的方法就是getBean(String beanName)。

2)BeanFactory,直译Bean工厂(com.springframework.beans.factory.BeanFactory),我们一般称BeanFactory为IoC容器,而称ApplicationContext为应用上下文。

Spring的核心是容器,而容器并不唯一大概分为两种类型 (BeanFactory和ApplicationContext) :

一种是不常用的BeanFactory,这是最简单的容器,只能提供基本的DI功能; 一种就是继承了BeanFactory后派生而来的ApplicationContext(应用上下文),它能提供更多企业级的服务,例如解析配置文本信息等等,这也是ApplicationContext实例对象最常见的应用场景。

总结:BeanFactory是Sping的心脏,那么ApplicationContext就是完整的身躯了。

除了提供BeanFactory所支持的所有功能外ApplicationContext还有以下额外的功能:

1、默认初始化所有的Singleton,也可以通过配置取消预初始化。

2、继承MessageSource,因此支持国际化。

3、资源访问,比如访问URL和文件。

4、事件机制。

5、同时加载多个配置文件。

6、以声明式方式启动并创建Spring容器。

复制代码

注意: 由于ApplicationContext会预先初始化所有的Singleton Bean,于是在系统创建前期会有较大的系统开销,但一旦ApplicationContext初始化完成,程序后面获取Singleton Bean实例时候将有较好的性能。也可以为bean设置lazy-init属性为true,即Spring容器将不会预先初始化该bean。

三、Spring装配bean的三种方式

注意:装配和注入是不同的,这里的装配是把bean放到IOC容器中,就是扫描各种bean。

1、在XMl中进行显示配置,通过xml文件将配置加载到IOC容器中

2、在Java中进行显示配置,通过java注解的方式,@Configuration和@Bean将配置加载到IOC容器

3、隐式的bean发现机制和自动装配,@Configuration、@Component、@ComponentScan(Spring会自动发现应用上下文中所创建的bean。)

四、Spring三种注入方式

Spring通过DI(依赖注入)实现IOC(控制反转),常用的注入方式主要有三种:(构造方法注入、setter注入、注解注入)

1、构造方法注入: 在spring的xml配置文件中配置所需要注入的参数。

e5f238be2258841adf4c76b5099e1399.png

0bf30c084f43b2c6c534d76214d3b539.png

2、setter注入:

336956c69f1615f9f50f6d2992dd2cd3.png

0013c28b702bc773c3fcde84ce116736.png

3、基于注解的注入:

使用@autowired即可

五、spring常用注解

@Component :标准一个普通的spring Bean类。

@Repository:标注一个DAO组件类。

@Service:标注一个业务逻辑组件类。

@Controller:标注一个控制器组件类。

复制代码

结语:以往都是看别人的博客进行学习技术,其中不乏有精华博客也有吊儿郎当的CV大法文章,所以决定将自己所学所用所整理的知识分享给大家,主要还是想为了后浪们少走些弯路,多些正能量的博客,如有错漏,欢迎指正,仅希望大家能在我的博客中学到知识,解决到问题,那么就足够了。谢谢大家!(转载请注明原文出处)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值