spring

1、spring介绍
spring负责管理项目中的所有对象。
spring看作是项目中对象的管家。
2、spring一站式框架
正是因为spring框架性质是属于容器性质的,
容器中装什么对象就有什么功能,所以可以一站式。不仅不排斥其他框架,还能帮其他框架管理对象。
aop支持。
ioc支持。
spring jdbc.。
aop事务。
junit测试支持。
3、spring概念
(1)IOC:Inverse Of Control 控制反转。
以前对象创建是由我们开发人员自己维护,包括依赖关系也是自己注入。使用了spring之后,对象创建以及依赖关系可以由spring完成创建以及注入。控制反转就是翻转了对象的创建方式,从我们自己创建反转给了程序(spring)。
(2)DI:Dependency Injection 依赖注入。
实现IOC思想需要DI做支持。
注入方式:
set方法注入
构造方法注入
字段注入
注入类型:
值类型注入 8大基本数据类型
引用类型注入 将依赖对象注入
4、spring配置
(1)Bean元素

<!-- 将User对象交给spring容器管理 -->
<!-- Bean元素:使用该元素描述需要spring容器管理的对象
        class属性:被管理对象的完整类名
        name属性:给被管理对象起个名字,获得对象时根据该名称获得对象,可以重复,可以使用特殊字符
        id属性:与name属性一模一样,名称不可重复,不能使用特殊字符
        结论:尽量使用name属性
 -->
<bean name="user" class="cn.itcast.bean.User" />

(2)Bean元素进阶
scope属性:
singleton(默认值):单例对象。被标识为单例的对象在spring容器中只会存在一个实例
prototype:多例原型。被标识为多例的对象,每次再获得才会创建,每次创建都是新的对象,整合struts2时,ActionBean必须配置为多例的。
(3)spring创建对象的方式
空参构造方式
静态工厂(了解)
实例工厂(了解)
5、spring属性注入
set方法注入

<!-- set方式注入 -->
<bean name="user" class-"cn.itcast.bean.User" >
    <!-- 值类型注入:为User对象中名为name的属性属性注入tom作为值-->
    <property name="name" value="tom"></property>
    <property name="age" value="18"></property>
    <!-- 引用类型注入:为car属性注入下方配置的car对象-->
    <property name="car" value="car"></property>
</bean>

构造函数注入
P名称空间注入
spel注入
复杂类型注入:数组、List、Map、Properties
6、使用注解配置spring
开启使用注解代理配置文件

<!--指定扫描cn.itcast.bean包下的所有类中的注解。
    注意:扫描包时,会扫描指定包下的所有子孙包
-->
<context:component-scan base-package="cn.itcast.bean"></context:component-scan>

7、spring中的aop
(1)aop:Aspect Oriented Programming(意为:面向切面编程)
(2)aop思想:横向重复,纵向抽取
(3)aop概念:Spring能够为容器中管理的对象生成动态代理对象
以前我们要使用动态代理,我们需要自己调用下面这个方法。
Proxy.newProxyInstance(xx,xx,xx)生成代理对象。
spring能够帮我们生成代理对象。
(4)spring实现aop的原理(两种方式):
动态代理(优先):被代理对象必须要实现接口,才能产生代理对象。如果没有接口将不能使用动态代理技术
cglib代理(没有接口):第三方代理技术,cglib代理。可以对任何类生成代理,代理的原理是对目标对象进行继承。如果目标对象被final修饰,那么该类无法被cglib代理。
(5)aop名词学习
Joinpoint(连接点):目标对象中,所有可以增强的方法
Pointcut(切入点):目标对象,已经增强的方法
Advice(通知/增强):增强的代码
Target(目标对象):被代理对象
Weaving(织入):将通知应用到切入点的过程
Proxy(代理):将通知织入到目标对象之后,形成代理对象
Aspect(切面):切入点+通知
(6)图解aop事务代理过程:
这里写图片描述
8、spring中aop的xml配置:
这里写图片描述
9、spring整合JDBC
(1)spring提供模板整合Dao技术
1. JDBC > org.springframework.jdbc.core.JdbcTemplate
2. Hibernate3.0 > org.springframework.orm.hibernate3.HibernateTemplate
3. IBatis(MyBatis) > org.springframework.orm.ibatis.SqlMapClientTemplate
4. JPA > org.springframework.orm.jpa.JpaTemplate

10、spring中aop事务
(1)事务
1. 事务特性:acid
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)
2. 事务并发问题:脏读、不可重复读、幻读
3. 事务的隔离级别:1、读未提交;2、读已提交;3、可重复读;4、串行化
(2)spring封装了事务管理代码
事务操作:打开事务、提交事务、回滚事务
事务操作对象:
1.因为在不同平台,操作事务的代码各不相同,因此spring提供了一个接口
2.PlatformTransactionManager接口:
DataSourceTransactionManager、HibernateTransactionManager
注:在spring中玩事务管理,最为核心的对象就是TransactionManager对象
(3)spring事务管理的属性介绍
1、事务的隔离级别
2、是否只读:true只读;false可操作
3、事务的传播行为:
这里写图片描述
(4)spring管理事务方式:
编码式
xml配置(aop):

1、配置通知
这里写图片描述
2、配置将通知织入目标
这里写图片描述
3、案例

 <!-- 使用声明式事务配置,可以有效规范代码 -->

     <!-- 事务管理器 -->
     <bean id="transactionManager" 
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
     </bean>

     <!-- 通知 -->
     <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
        </tx:attributes>
     </tx:advice>

     <!-- aop -->
     <aop:config>
        <aop:advisor advice-ref="txAdvice"
                     pointcut="execution(* cn.itcast.ssm.service.impl.*.*(..))"/>
     </aop:config>

注解配置(aop)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值