spring中BeanFactory 和ApplicationContext

在学习spring的高阶内容时,我们有必要先回顾一下spring

回顾spring

1.什么是spring

spring是轻量级的,指核心jar包时很小的;非侵入式的一站式框架(数据持久层,web层,核心aop),为了简化企业级开发。

核心是IOC,AOP

IOC:控制翻转 把创建对象交给spring框架管理(创建对象与使用对象分离),管理对象的生命周期

DI:依赖注入 创建对象后,把对象属性赋值,将关联的对象注入

AOP:面向切面编程(对面向对象编程的一个补充,并不是所特有的),通过一个代理对象,在不修改原来代码的情况下,对目标类进行功能的增强;例如事务管理、日志等

简化了开发,使得类与类之间的耦合度降低了,简化了开发步骤。

2.spring中Bean管理

1.在xml中配置

2.使用注解

如@Component包括@controller、@service、@Repesitory等标签用来声明bean的注解,即这些对象交由spring管理;

依赖注入/自动注入

@Autowired spring中提供的,支持类型,对象名查找,通过这个标签可以使用对象;

@Resource jdk提供的,支持类型,对象名查找

3.spring JdbcTemplate

4.AOP

连接点,切入点,切面,通知(前置通知,后置通知、异常通知、返回通知、最终通知、 环绕通知),代理,置入

xml实现,注解实现

5.Spring事务管理

添加一个事务管理器

事务方式:

1.编程式 在代码中自己开启,自己提交,回滚

2.声明式 @Transactional 修饰方法、类

声明式事务失效的场景

事务传播行为:是spring框架对事务的一个额外的增强,A方法调用了B方法,B方法应该怎么做

6.集成Mybatis

7.SpringWeb

流程:请求到来后,先到达DispacherServlet捕获,它是前端控制器,springweb核心,用来接收所有前端发送的请求统一进行分发调度。然后到映射处理器handerMapper,他专门对地址url进行解析,检测当前地址有没有配置处理器/拦截器,若有则返回给前端控制器dispatcherServlet一个handler处理器对象,然后前端控制器根据获得的handler对象,选择合适的处理适配器HandlerAdapter,此时在填充handler的入参过程中,它会根据要求对请求中数据进行组装,然后执行处理器中的业务代码(controller),完成后将响应数据响应到前端json类型,只需return即可。

BeanFactory 和ApplicationContext

它们都是接口

BeanFactory

BeanFactory接口是spring框架顶层的接口之一,是IOC容器的最基础的接口,用来定义一些最基本,最简单的管理bean的方法,如获取bean等等

BeanFactory有非常多的实现类,每个实现类都有不同的职责(单一职责),最强大的是DefaultListableBeanFactory Spring底层就是使用的该实现工厂进行生产bean对象(spring管理的类生产的对象)的;

ApplicationContext

间接继承了BeanFactory接口,并且扩展了一些新的功能

二者的所处地位如下:

二者区别

1.BeanFactory是Spring框架的基础设施,面向spring本身,是spring原始的factory,他不支持AOP、Web等插件,即就是实现了BeanFactory的工厂,不能有这些功能。而ApplicationContext不仅包含了Beanfactory的所有功能,还支持spring的各种插件,实现AOP的多种功能。

2.BeanFactory采用的是延迟加载的形式注入Bean的,只有是使用创建Bean对象时,才会对该bean进行加载实例化,这样,我们就不能发现一些存在的 Spring 的配置问题。而 ApplicationContext 则相反,它是在容器启动时,一次性创建了所有的 Bean。这样,在容器启动时,我们就可以发现Spring 中存在的配置错误。相对于基本的 BeanFactory,ApplicationContext 唯一的不足是占用内存空间。当应用程序配置 Bean 较多时,程序启动较慢

beanFactory面向spring框架,比较底层

ApplicationContext 由于实现了许多的接口,增加了额外的功能

实现了BeanFactory接口的工厂,是懒加载,获取bean时才会创建对象。

实现了ApplicationContext接口的工厂,在启动时加载所有的类,创建对象。

Servlet的过滤器Filter与Spring拦截器区别

Filter过滤器:属于底层的javaweb/servlet中定义的,实现由服务器调度;拦截范围更大,所有进入到web后端的请求,都可以被过滤器拦截;

spring拦截器Interceptor:是在请求进入servlet后,在进入controller之前进行预处理的。

下面的图能够有助于我们的理解:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值