Spring

Spring。

IOC:Inverse Of Control 控制反转
  将我们创建对象的方式反转了。
  以前对象的创建是由我们开发人员自己维护,包括依赖关系也是自己注入。
  使用了Spring之后,对象的依赖关系可以由Spring完成创建以及注入。
  反转控制就是反转了对象的创建方式,从我们自己创建反转给了程序(Spring)。

DI:Dependency Injection 依赖注入
实现IOC思想需要DI做支持。
1.注入方式:
set方式注入
构造方法注入
字段注入       
2.注入类型:
值类型注入:8大基本数据类型
引用类型注入:将依赖对象注入

Spring创建对象方式。

1.空参构造方式。
2.静态工厂。
3.实例工厂(动态工厂)

Scope属性。

1 singleton(默认值):单例对象。被标识为单例的对象在Spring容器中只会存在一个实例。
2 prototype:多例原型。被标识为多例的对象,每次再获得才会创建,每次创建都是新对象。
3 request:web环境下,对象与request生命周期一致。
4 session:web环境下,对象与session生命周期一致。

生命周期属性。
配置一个方法作为生命周期初始化的方法,Spring会在对象创建之后立即调用。(init-method)
配置一个方法作为生命周期的销毁方法,Spring容器在关闭并销毁所有容器中的对象之前调用。(destroy-method)

spring的属性注入。
1 set方法注入(最重要!)
值类型用value,引用类型用ref
2 构造方法注入
<constructor-arg>  </constructor-arg>
index可以指定哪个属性在前
type可以指定具体走哪个构造方法
3 p名称空间注入
   导入p名称空间xmlns: 
   使用p:属性完成注入
           值类型:p:属性名=“值”
           对象类型:p:属性名-ref=“bean名称”
  例:
p:name
p:age
p:car-ref=“car”
4 spel注入:spring Expression Language   
spring表达式语言
value=“#{}”
如:value=“#{user.name}”
注意:引用类型不支持SPEL

复杂类型注入。
1 数组类型注入
  如果数组中只准备注入一个值(对象),直接使用value或ref即可
  如果是多元素。在<property>下面嵌套<array>值array中值元素用value。引用类型用ref。
2 list类型注入
下面嵌套list同数组
3 map类型注入
嵌套entry对象
4 properties类型注入
<prop>value</prop>

spring中使用注解代替xml。
1  将对象注解到容器
用哪个都一样。不过推荐使用下面三个具体的
@Component(“ ”)
相当于在配置文件中bean。
   @Service
   Service层
   @Controller
   web层
   @Repository
    dao层
@Scope(scopeName=“singleton单例或prototype多例”)
指定对象的作用范围
@value(“ ”)
一种加在set方法上
      通过set方法赋值,推荐使用
一种加在成员变量上
      通过反射的field方法赋值,破坏了封装性
相当于在配置文件中注入属性

在注解时,如果属性只有一个并且的值是value属性。则可以忽略它的键。如@value(“18”) @value(value=“18”)

@Autowired  自动装配
(注入的引用类型时直接封装好)
问题:如果匹配多个类型一致的对象,将无法选择具体注入哪一个对象
@Qualifier(“car2”)。告诉Spring容器自动装配哪个名称的对象。和@Autowired配套使用

@Resource(name=“car2”)手动注入,指定注入哪个名称的对象。推荐这种

@PostConstruct
在对象被创建后调用,init-method
@PreDestroy
在销毁之前调用,destory-method

Spring中的AOP。
aop思想:横向重复,纵向抽取
Spring能够为容器中管理的对象生成动态代理对象
Spring实现aop的原理
1  动态代理(优先)
被代理对象必须实现接口,才能产生代理对象,如果没有接口将不能使用动态代理技术。
2  cglib代理(没有接口)
第三方代理技术,cglib代理,可以对任何类生成代理,代理的原理是对目标对象进行继承代理。如果目标对象被final修饰,那么该类无法被cglib代理。

Spring中AOP名词解释
Joinpoint(连接点):在目标对象中,所有可以增强的方法。
Poincut(切入点):目标对象,已经增强的方法。
Advice(通知/增强):需要增强的代码。
Target(目标对象):被代理对象。
Veaving(织入):将通知织入切入点。
Proxy(代理):将通知织入到目标对象之后,形成代理对象。
aspect(切面):切入点+通知。

Spring的AOP演示。
1 导包
4+2+2+2
2 准备目标对象
3 准备通知
前置通知before(目标方法运行之前调用)
后置通知aferReturning(如果出现异常不会调用)
     在目标方法之后调用
环绕通知around(需要手动调用目标方法)
     在目标方法之前和之后都调用
异常拦截通知
     如果出现异常,也会调用
后置通知(无论是否出现异常都会调用)
     在目标方法运行之后调用
4 配置进行织入将通知织入目标对象

Spring的AOP配置。
准备工作:导入aop(约束)命名空间
1 配置目标对象
2 配置通知对象
3 配置将通知织入目标对象

Spring整合jdbc。
Spring中提供了一个可以操作数据库的对象。对象封装了jdbc技术
    JDBCTemplate JDBC模板对象
    与DBUtils中的QueryRunner非常相似
准备工作:
1 导包
2 准备数据库
   0 准备连接池
   1 创建JDBC模板对象
   2 书写sql并执行
3 将JDBC模板和连接池配置到spring容器
   1 将连接池放入spring容器
   2 将JDBCTemplate放入spring容器
   3 将UserDao放入spring容器
Spring整合JDBC读取properties

Spring中aop事务。
事务
Spring封装了事务管理代码
事务操作

  •  打开事务
  • 提交事务
  • 回滚事务

事务操作对象

  • 因为在不同平台操作,操作事务的代码各不相同,Spring提供了一个接口
  • PlatformTransactionManager接口

如JDBCTransactionManager

HibernateTransutionmanager
注意:在speing中玩事务管理,最为核心的对象就是TransactionManager对象

spring管理事务的属性介绍

  • 事务的隔离级别
  • 是否可读
    • true只读
    • false可操作
  • 事务的传播行为

决定业务方法之间调用,事务应该如何处理

事务特性:acid
事务并发问题

  • 脏读
  • 不可重复读
  • 幻读

事务的隔离级别

  • 读未提交
  • 读已提交
  • 可重复读
  • 串行化


   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值