Spring学习笔记

Spring学习

第一次学习

1.spring框架,作为容器,整合框架,用来管理不同框架中的对象,增加层与层之间的粘合度

2.spring环境搭建,首先创建一个类,例如user,通过配置文件配置的方法,把这个类的对象交给spring管理,配置文件写法:

然后创建测试demo:

这样就实现了一次spring注册对象到取用对象的过程。

3.spring IOC/DI:IOC——inverse of control 反转控制,将我们创建对象的方式反转。

               DI——dependency injection 依赖注入(IOC思想需要DI做支持)

4.spring BeanFactory接口:是spring最原始的接口。特点是每次获得对象时才会创建对象。

 

5.spring配置详解之spring三种对象创建方式:

第一种方式——空参构造创建(常用)

配置方式如图:

单元测试方式如图:

第二种方式——静态工厂调用创建

配置方式如图:单元测试方式如图:

第三种方式——实例工厂调用创建

配置方式如图:

实例工厂调用与静态工厂调用的区别在于,实例工厂的构造方法不是静态的,所以在调用构造方法时不能直接用类调用,必须先构造工厂的对象,然后通过对象调用工厂的构造方法。

6.spring配置详解之scope属性:

Scope属性包括 (1)singleton(默认值)表示对象为单例对象

              (2)prototype多例原形,被标识为多例的对象只有在获得时才会创建,并且每次创建的都是新的对象

              (3)request web环境下,对象与request生命周期一致

              (4)session web环境下,对象与session生命周期一致

7. spring配置详解之生命周期属性:

配置一个方法作为生命周期初始化方法(innit),spring会在对象创建之后立即调用

配置一个方法作为生命周期销毁方法(destory),spring会在关闭并销毁所有容器中的对象前调用这个方法

 

8.spring属性注入:

(1)set注入:配置方式如下

注入对象属性:

(2)构造函数注入:

其中,name属性表示的是构造函数的参数名,value表示的是参数的值,ref表示的是引用对象的名字(在配置文件中的名字),index是索引,表示参数的位置,type表示参数的类型。

 

 

第二次学习

1. 使用注解配置spring:

步骤一,为主配置文件导入新的命名空间(约束)

步骤二,开启使用注解代替配置<context:component-scan base-package=””>标签表示自动扫描指定的基础包,看有没有注解。如果该包中有子包,那么子包也会扫描。

步骤三,在类中使用注解。

 

 

2.将对象注册到容器

     

效果和@component一样,但是可以显示这个类属于哪一层

@scope注解可以指定对象的作用范围。

 

3.值类型注入:通过反射的Field赋值(破坏了封装性)

通过set方法赋值

复杂注入,把car对象注入到user对象中

(1)自动装配(两个注解搭配使用)

(2)手动注入

初始化和销毁方法的注入:

4.创建容器

第三次学习 spring中的AOP:

1.AOP思想:横向重复,纵向抽取

2.spring能够为容器中管理的对象生成动态代理

3.AOP名词:joinpoint连接点—目标对象中所有可以增强的方法

            Pointcut切入点—目标对象中已经增强的方法

            Advice(通知/增强)--增强的代码

            Target(目标对象)--被代理的对象

            Weaving织入—将通知应用到切入点的过程

            Proxy代理—将通知织入到目标对象之后,形成代理

            Aspect切面—切入点+通知

4.AOP配置准备:

  1. 导包(4+2+2+2)
  2. 准备目标对象
  3. 准备通知
  4. 将通知织入目标对象

 

 

第四次学习

一、spring整合JDBC

  1.spring中提供了一个可以操作数据库的对象,对象封装了jdbc技术

(1)JDBCTemplate JDBC模板对象:

       操作如下,首先准备数据库连接池,然后创建JDBC模板对象,通过模板对象获取连接池资源,然后编写sql语句并调用模板对象的update()方法执行sql语句。

(2)将对数据库的相关操作配置到spring中

       首先创建一个Dao接口和该接口的实现类,在实现类中使用JDBC模板对象的众多方法,实现sql语句。

       然后再配置文件中依次配置连接池对象JDBC模板对象Dao实现类对象,三者的依赖关系如下,Dao实现类对象依赖JDBC模板对象,JDBC模板对象依赖连接池对象。

将连接池放入spring:

将JDBCTemplate对象放入连接池:

将Dao实现类对象放入连接池:

(3)读取properties配置:在将连接池对象放入spring中,除了直接用bean标签配置,还可以通过读取db.properties文件配置。db.properties文件如图:

注意:每一个属性的前面要加jdbc.前缀。避免和数据库中的关键字冲突。

       db.properties文件写好后,要在主配置文件中,指定读取db.properties文件。

       同时,要修改主配置文件:

 

二、spring的事务管理

1.什么是事务?

       (1)事务特性:(ACID)

1、原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。

2、一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。

3、隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

4、持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

       (2)事务并发问题:

              1、脏读(dirty read):一个事务读取了另一个事务尚未提交的数据。

2、幻读(phantom read):一个事务的操作导致另一个事务前后两次读取到不同的数据。

3、不可重复读(no-repeatable read):一个事务的操作导致另一个事务前后两次读取到不同的数据。

4、第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。

5、第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一个事务已提交的更新数据。

      

 

(3)事务的隔离级别

              1.读未提交

              2.读已提交

              4.可重复读

              8.串行化

2.spring封装了事务管理代码

       (1)事务操作:打开事务的代码,提交事务的代码,回滚事务的代码

       (2)事务操作对象:因为在不同平台,操作事务的代码各不相同,spring提供了一个接口——PlatformTransactionManager接口。根据不同的平台创建不同的实现类如:DataSourceTransactionManager,HibernateTransactionManager。注意:在spring事务管理中最核心的对象就是TransactionManager对象。

       (3)事务传播行为:日常开发基本只用第一种方式。

      

3.在spring中加事务

       Spring管理事务的三种方式:编码式,xml配置(aop)注解配置

       (1)编码式(缺点:对每个需要事务的类挨个添加事务):将核心事务管理器配置到spring容器中(事务核心管理器对象依赖于连接池对象)。

创建事务模板对象transactionTemlate对象(该对象依赖于事务核心管理器对象)。

       (2)xml配置(aop):首先需要导入jar包,然后在xml配置文件中导入新的约束

四个约束的作用,beans:最基本

                            Context:读取properties

                            Aop:配置aop

                            Tx:配置事务通知。

 

 

接下来就要配置通知:

属性name中的“xxx*”表示的意思是,只要开头为Xxx的方法名都使用这一条事务模式。

再接下来通过aop将事务通知织入到目标对象中:

 

       (3)注解配置:同样需要导包,引入新的约束。

开启使用注解管理aop事务:

然后在方法前配置注解

如果将注解配置在类前面,那么整个类中的方法都会按照注解中的事务要求执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值