Spring

Spring核心部分:
aop:面向切面编程,扩展功能不是修改源代码实现。
ioc:控制反转,把对象创建不是通过new的方式,而是交给Spring配置创建类对象;

IOC

Spring启动时读取应用程序提供的Bean置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。
这里写图片描述
Bean缓存池:HashMap实现

IOC:控制反转,是一种设计思想,将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。由spring来负责控制对象的生命周期和对象间的关系。
DI:由容器动态的将某个依赖关系注入到组件之中。Spring通过反射来实现注入的。

Spring bean配置(xml方式)

标签中的属性
scope:singleton 单例的;prototype 多例的;request 把对象放到request域中;session 把对象放到session 域中;globalsession 把对象放到globalsession域中;
属性注入方式
1、set方式注入
这里写图片描述
2、有参构造器构造
这里写图片描述
list,map等
这里写图片描述

IOC 和 DI 区别
1. IOC 控制反转,把对象创建交给spring进行配置
2. DI 依赖注入,向类里面的属性设置值
关系:依赖注入不能单独存在,需要在IOC基础上完成操作。

Spring bean配置(注解方式)
这里写图片描述
类上面加注解
这里写图片描述
Spring 中提供@Component 的三个衍生注解:(功能目前是一样的)
• @Controller WEB层
• @Service 业务层
• @Repository 持久层
这里写图片描述

注入属性
1、@Autowired,根据属性的类直接去找该类,该类的value和属性名可以不相同;
2、@Resource,该方式是根据dao中创建对象找到,名称需要一样 括号中是name;

混合使用
创建对象时候使用xml方式,注入属性时候使用注解方式。
这里写图片描述
这里写图片描述

AOP

aop:aspect oriented programing 面向切面编程,采用横向抽取机制。
核心概念:
1、横切关注点
对哪些方法进行拦截,拦截后怎么处理,这些关注点称之为横切关注点
2、切面(aspect)
类是对物体特征的抽象,切面就是对横切关注点的抽象,把增强用到切入点过程。
3、连接点(joinpoint)
类里面哪些方法可以被增强,这些方法就称为连接点。
4、切入点(pointcut)
实际增强的方法。
5、通知/增强(advice)
所谓通知指的就是指拦截到连接点之后要执行的代码,通知分为前置、后置、异常、最终、环绕通知五类

常用的表达式
• execution(<访问修饰符>?<返回类型><方法名>(参数)<异常>)
1) execution(* cn.itcast.aop.Book.add(..))
○ 第一个 * 代表 可以是任意修饰符,之后有个空格
○ 之后是方法的全路径,.. 代表可以是任意参数
2) execution(* cn.itcast.aop.Book.*(..))

Aspectj 的 aop 操作

xml配置方式
1、配置两个对象
这里写图片描述
2、配置aop(前置通知)
这里写图片描述
3、后置通知和前置通知原理一样,环绕通知有些不同
这里写图片描述

注解方式
1、配置文件中 配置对象
2、开启aop操作
这里写图片描述
3、在增强类中用注解
这里写图片描述

Spring事务
声明式事务管理(注解)
1、配置事务管理器
这里写图片描述
2、配置事务注解
这里写图片描述
3、在使用事务方法上面添加注解
这里写图片描述

总结:
1、什么是Spring?
Spring是一个容器,可以接管各个层次的Bean(action/domain/pojo/javabean),并且可以配置bean与bean之间的关系。
2、IOC是什么?
所谓控制反转就是把对象(bean)对象和维护对象(bean)之间的关系的权利转移到Sqring容器中去了(ApplicationContext.xml)而程序本身不在维护了。
3、DI是什么?
依赖注入,在Spring框架负责创建Bean对象时,动态的将依赖对象注入到Bean组件
4、BeanFactory 接口和 ApplicationContext 接口有什么区别 ?
①ApplicationContext 接口继承BeanFactory接口
②ApplicationContext是对BeanFactory扩展,它可以进行国际化处理、事件传递和bean自动装配以及各种不同应用层的Context实现。
5、bean实例化三种方式?
1) 使用类的无参数构建创建(重点)
• 如果类里面没有无参的构造方法(默认的也算)也会报错
2) 使用静态工厂创建
• 创建静态的方法,返回类的对象
3) 使用实例工厂创建
•创建不是静态的方法,返回类对象
6、什么是AOP?
面向切面编程,实现技术为JDK动态代理和CGLIB。
JDK动态代理主要使用到 InvocationHandler 接口和 Proxy.newProxyInstance() 方法。 JDK动态代理要求被代理实现一个接口,只有接口中的方法才能够被代理 。其方法是将被代理对象注入到一个中间对象,而中间对象实现InvocationHandler接口,在实现该接口时,可以在 被代理对象调用它的方法时,在调用的前后插入一些代码。

7、解释Spring框架中bean的生命周期。
Spring容器 从XML 文件中读取bean的定义,并实例化bean。
Spring根据bean的定义填充所有的属性。
如果bean实现了BeanNameAware 接口,Spring 传递bean 的ID 到 setBeanName方法。
如果Bean 实现了 BeanFactoryAware 接口, Spring传递beanfactory 给setBeanFactory 方法。
如果有任何与bean相关联的BeanPostProcessors,Spring会在postProcesserBeforeInitialization()方法内调用它们。
如果bean实现IntializingBean了,调用它的afterPropertySet方法,如果bean声明了初始化方法,调用此初始化方法。
如果有BeanPostProcessors 和bean 关联,这些bean的postProcessAfterInitialization() 方法将被调用。
如果bean实现了 DisposableBean,它将调用destroy()方法。

@Resource与@Autowired注解的区别
@Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bean匹配

spring事务:
这里写图片描述

spring事务:https://baijiahao.baidu.com/s?id=1607466404459549668&wfr=spider&for=pc

AOP应用场景
场景一:Aop与事务
场景二:Aop与日志
场景三:Aop与缓存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值