spring原理

一、spring介绍

1、什么是spring框架

Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。 它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件。pring的核心是控制反转(IoC)和面向切面(AOP),spring降低了耦合度,有利于项目维护和扩展。

2、spring的优点

1)采用非浸入式
基于Spring开发的应用中的对象可以不依赖于Spring的API
2)控制反转,低耦合,利于维护
Spring就是一容器,可以将所有对象创建和依赖关系维护,交给Spring管理 。
3) 面向切面编程(AOP编程)
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
4)事务的支持
5)依赖注入
贴上注解,无需使用new
6)方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序
7)可以集成各种框架
可以方便集成各种框架,比如mybaties、lombok、fastJson等

3、spring的七大模块

在这里插入图片描述
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。
核心容器(spring core):核心容器提供了基本功能。核心容器的主要组件是 BeanFactory,BeanFactory负责生产和管理bean的一个工厂,所有的bean都是由BeanFactory(也就是IOC容器)来进行管理的,它负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。
应用上下文(Spring Context):Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。
面向切面编程( Spring AOP):Spring AOP 模块提供了面向切面编程的功能,提供了AOP规范。
Spring DAO:DAO提供了JDBC的抽象层,它封装了JDBC编码和解析数据库代码,提供了数据库操作接口,JDBC还提供了一种声明性事务管理方法。
Spring ORM:ORM即对象关系映射。它将关系数据库中表的数据映射成为对象,以对象的形式展现可以把对数据库的操作转化为对这些对象的操作。
Web模块(Spring Web):WEB模块提供对常见框架如Struts1、Struts 2、JSF的支持,Spring能够管理这些框架,将Spring的资源注入给框架,也能在这些框架的前后插入拦截器。
MVC模块:MVC封装包提供了Web应用的MVC实现。Spring的MVC框架提供了一种清晰的分离模型, 实现控制逻辑和业务逻辑的清晰分离。

4、Spring 配置元数据的方式

(1)基于 XML 的配置
(2)基于注解的配置
(3)基于 Java 的配置

5、spring的三大核心思想

IOC(控制反转),DI(依赖注入),AOP(面向切面编程)
在这里插入图片描述

1)IOC(控制反转)

控制权由对象本身转向容器,由 Spring IOC 容器根据配置文件来负责对象的生命周期和对象之间的关系。

(1)什么是bean

在Spring中,bean工厂创建的各个实例称作bean

(2)IOC实现方式

a、 读取标注或者配置文件,根据配置文件拿到类名;
b、 利用反射实例化对应的对象实例

2)DI(依赖注入)

指 Spring 创建对象的过程中,将对象依赖属性(简单值,集合,对象)通过配置设值给该对象
依赖注入的三种方式:

(1)构造器注入
(2)Setter 方法注入
(3)接口注入
3)AOP(面向切面编程)

利用一种称为"横切"的技术,横切多个对象的内部,并将那些影响了多个类的公共行为抽出成一个公共的切面(Aspect)。这种方式可以减少重复代码,降低耦合度,利于维护。利用AOP可以方便 的实现限认证、日志、事物等功能。
切入点(Pointcut):在什么类、什么方法上面切入
通知(Advice):在方法执行的什么时机(是在方法前、方法后、方法前后)做什么(what:增强的功能)
切面(Aspect):切面 = 切入点 + 通知;在什么类的什么方法的什么时机做什么
织入(Weaving):spring把切织入到对象然后创建出代理对象的过程。

二、spring的其它

1、BeanFactory和FactoryBean区别

1) BeanFactory是个工厂,也就是IOC容器顶级接口或对象工厂,负责对bean的创建,访问等工作,还能在实例化对象的时候生成类之间的关系,还包含了 bean 生命周期的控制(它能调用初始化和销毁方法)。
2) FactoryBean是个bean,可以返回bean实例的工厂bean,通过实现该接口可以对bean进行一些额外的操作,例如根据不同的配置类型返回不同类型的bean。FactoryBean的实现类最终也需要注册到BeanFactory中。

2、BeanFactory 和 ApplicationContext 有什么区别

1) 上面说到了,BeanFactory是个工厂,是IOC容器顶级接口,负责对bean的创建,访问。
2) ApplicationContext是应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的功能。例如国际化、统一资源访问方式、载入多个上下文 、消息发送、消息响应、AOP功能。

常见的 ApplicationContext 实现方式:

ClassPathXmlApplicationContext:从 classpath 的 XML 配置文件中读取上下文,并生成
上下文定义。
FileSystemXmlApplicationContext:由文件系统中的 XML 配置文件读取上下文。
XmlWebApplicationContext:由 Web 应用的 XML 文件读取上下文。

3、@Autowired和@Resource区别

1)@Resource和@Autowired都是做bean的注入时使用,作用相当
@Autowired按byType自动注入;@Qualifier(“bean的名字”)可以和@Autowired配合使用,按名称装配Bean,解决按类型匹配找到多个Bean问题 。
2) @Resource默认按 byName自动注入,@Resource既可以制定byName也可以指定byType注入方式。
3) @Resource装配顺序
  (1) 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
  (2)如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
  (3)如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
  (4)如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值