关于Spring杂记

一、Spring 是什么?

是一个开源框架,为简化企业应用而生的,Spring 是一个IOC 和AOP容器框架。

二、相关概念

1、轻量级:Spring 是非侵入式的,基于Spring开发的应用中的对象,可以不依赖于Spring的API。

2、依赖注入和控制反转(DI和IOC)

IOC:使一个对象依赖的其他对象通过被动的方式传递进来,而不是对象自己创建或查找依赖对象。

容器主动将资源传递给它所管理的对象,组件(对象)选择合适的方式来接受。

注入方式:属性注入、构造注入、接口

DI:是IOC的另一种表述方式,就是对象可以用预先定义好的方式(setter和构造方法)来接受来自容器的资源注入。

3、面向切面编程AOP

4、容器:是一个容器,因为它包含并管理应用对象的声明周期。

三、核心包

四、Spring IOC 容器的实现

BeanFactory:IOC容器的基本实现

ApplicationContext:它是BeanFactory的子接口,提供了更多的高级特性。

ClassPathXmlApplicationContext:从类的路径下加载配置文件。

configurable ApplicationContext:ApplicationContext的子接口

Bean 的作用域

scope = singleton、prototype、request、session

singleton:默认方式,容器中只有一个bean的实例

prototype:每次调用getBean()都创建新的实例

Request: 每次http请求的时候,创建一个新的bean,用于webApplicationContext

Session:在同一个httpSession中共享一个bean,用于webApplicationContext

关于线程安全

1、web环境就是多线程:同时会有很多请求过来

2、单例时不可以使用成员变量,容易产生线程安全的问题

3、Struts2 必须使用多列,因为页面参数都是用的成员变量

Bean的生命周期

Spring IOC 容器可以管理Bean的生命周期

1、通过构造器或工厂方法创建bean

2、为bean的属性设置值和对其他的bean的应用

3、调用bean的初始化方法

4、此时bean 可以使用 

5、当容器关闭了调用Bean的销毁方法

Spring注解

组件扫描:spring 能够从classpath 下自动扫描,并实例化具有特定注解的类

注解:

1、@Component :基本注解,标识一个被Spring 管理的类

2、@Respository 标识持久层

3、@Service 标识业务逻辑层

4、@Control 标识控制(表现)层的组件

关于AOP的理解

传统做法,如在save,update,delete 方法之前记录日志

1、在每个方法之前均单独记录日志的方法

2、将记录日志的方法抽取成工具类

Aop 做法

AOP,在Spring的application.xml中可以配置1、那些方法可以调用工具类2、在什么时机调用工具类

当一批对象具有通用的业务逻辑时,往往会写一个工具类来统一实现该业务,从而提高代码的复用性。AOP 可以帮助我们管理这个工具类,降低它与使用者之间的耦合性,所有AOP 的作用也是解耦,是比IOC更高层次的解耦。针对一批对象,采用统一的方式,解决他们某一方面共同业务逻辑的编程思想。

这里用AOP 涉及两个关键词

1、切入点:那些方法调用工具类

2、通知:什么时机调用

哪些业务会用到AOP举例:日志业务、安全如登录、事务等

关于事务的理解

一系列操作要么全部成功,要不全部失败

转账举例:A给B转账10000元,可以看成两个事务,A账号扣掉10000元成功,B账号新增10000元成功。

事务的四个属性:原子性、一致性、隔离性、持久性

Spring 对事务的管理

1、编程式事务管理,手动实现,少用

2、声明式事务管理

    a、TranstractionProxy 少用

    b、AspectJ xml 配置,灵活,应用很广泛

    c、注解的方式实现,应用很多

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/4051675/blog/3029724

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值