四:SpringThinking
一.将对象配置到容器
1.xml文件:空参构造
<bean name="user" class="com.spring.bean.User" scope="prototype" init-method="init" destroy-method="destroy"></bean>
2.指定扫描com.spring.bean包下所有类中的注解.注:会扫描包下的所有后代包
<context:component-scan base-package="com.spring.bean"></context:component-scan>
注解:
- @Component("BeanName") 将对象注册到spring容器 - @Controler 控制层
- @Service 业务层
- @Repository dao层
 
- @Scope 指定对象的作用范围 - singleton 单例模式
- prototype 多例
 
- @Value 值类型属性注入 
- @Autowired 自动属性注入.根据类型注入 
- @Qulifier 指定注入的对象的名称 
- @Resource 指定对象的名称注入 
- @PostConstruct 初始化方法 
- @PreDestory 销毁方法 
二.Spring AOP开发
- 定义代理对象 - 配置目标对象
- 配置通知对象
- 定义代理对象
 - <!-- proxyInterfaces:织入目标对象接口 -->
 <!-- target-ref:织入目标引用 -->
 <!-- interceptorNames:织入后置增强 -->
 <bean name="customerBean" class="org.springframework.aop.framework.ProxyFactoryBean"
 p:proxyInterfaces="com.spring.service.ICustomerService"
 p:target-ref="customerService" p:interceptorNames="surveyAfterAdvice,buyBeforeAdvice">
 </bean>
 
- 将通知织入到目标对象(xml文件) - 配置目标对象
- 配置通知对象
- 配置将通知织入目标对象
 - <aop:config>
 <!-- 配置切入点 -->
 <aop:ponint-cut id="切点名称" expression="execution(切点表达式)" />
 <!-- 指定通知类中方法的通知类型 -->
 <aop:aspect ref="通知对象名称" >
 <aop:before method="" ponintcut-ref="" />
 <aop:after-returning method="" ponintcut-ref="" />
 <aop:around method="" ponintcut-ref="" />
 <aop:after-throwing method="" ponintcut-ref="" />
 <aop:after method="" ponintcut-ref="" />
 </aop:aspect>
 </aop:config>
 
- 开启aop注解(注解) - 配置目标对象(xml) 
- 配置通知对象(xml) 
- 开启使用注解完成注入 - <aop:aspectj-autoproxy></aop:aspectj-autoproxy>(xml)- @Aspect 指定当前类是通知类 - @Before(execution(切点表达式)) 前置通知方法 
 @after-returning(execution(切点表达式)) 后置通知方法
 @around(execution(切点表达式)) 环绕通知方法
 @after-throwing(execution(切点表达式)) 异常拦截通知方法
 @after(execution(切点表达式)) 后通知方法
 
 - @Pointcut( - "execution(* com.spring.service.*ServiceImpl.*(..))")
 @PointCut 抽取切点表达式
 public void pc(){}- @Before("MyAdvice.pc()") 
 @after-returning("MyAdvice.pc()")
 @Around("MyAdvice.pc()")
 @after-throwing("MyAdvice.pc()")
 @after("MyAdvice.pc()")
三.spring事务
- spring声明式事务
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
	<!-- 以方法为单位,指定方法应用什么事务属性  -->
	<!-- name:事务方法名; isolation:隔离级别; propagation:传播行为; read-only:是否只读 -->
	<tx:method name="save*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
	<tx:method name="persist*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
	<tx:method name="update*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
	<tx:method name="modify*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
	<tx:method name="delete*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
	<tx:method name="remove*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="false"/>
	<tx:method name="get*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/>
	<tx:method name="find*" isolation="REPEATABLE_READ" propagation="REQUIRED" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置将事务通知织入目标对象 -->
<aop:config>
	<!-- 配置切点表达式 -->
	<aop:pointcut expression="execution(* com.spring.tx.*ServiceImpl.*(..))" id="txPc"/>
	<!-- 配置切面:通知+切点  advice-ref:通知的名称  pointcut-ref:切点的名称 -->
	<aop:advisor advice-ref="txAdvice" pointcut-ref="txPc"/>
</aop:config>
2.spring事务注解
<!-- 开启使用注解管理aop事务 -->
<tx:annotation-driven/>
//类上
@Transaction(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)
public class AccountServiceImpl{}
//方法上
@Transaction(isolation=Isolation.REPEATABLE_READ,propagation=Propagation.REQUIRED,readOnly=true)
public void update*(..){}
四:SpringThinking的更多相关文章
- 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)
		通过前面几节的准备工作,对于 npm / node / gulp 应该已经有了基本的认识,本节主要介绍如何构建一个基本的前端自动化开发环境. 下面将逐步构建一个可以自动编译 sass 文件.压缩 ja ... 
- 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
		书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ... 
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
		阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ... 
- 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)
		从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ... 
- MVVM设计模式和WPF中的实现(四)事件绑定
		MVVM设计模式和在WPF中的实现(四) 事件绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ... 
- “四核”驱动的“三维”导航 -- 淘宝新UI(需求分析篇)
		前言 孔子说:"软件是对客观世界的抽象". 首先声明,这里的"三维导航"和地图没一毛钱关系,"四核驱动"和硬件也没关系,而是为了复杂的应用而 ... 
- 【翻译】MongoDB指南/CRUD操作(四)
		[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选 ... 
- HTML 事件(四) 模拟事件操作
		本篇主要介绍HTML DOM中事件的模拟操作. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4. ... 
- 【原】AFNetworking源码阅读(四)
		[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDe ... 
随机推荐
- 201621123012 《Java程序设计》第9周学习总结
			1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集 ... 
- 使用adb工具调试出现error:device offline
			使用adb工具调试设备的时候会出现error:device offline,网上找了很多办法,最后终于解决了. 如果你也遇到这样的问题,先试试简单的办法,不行的话,试试这个..<.< ad ... 
- 如何获得Android设备名称(ADB命令详细介绍)
			豌豆荚.360手机管家等软件可以获取android设备名称,显示在界面上,如下图: 我们自己如何来获取设备名称 呢?答案如下: 在命令行中输入“adb shell”进入shell之后,再输入“cat ... 
- repo搭建
			[root@op-yum01]# cat /home/work/yumdata/rsync-reposync.sh #!/bin/bash #Purpose: Sync centos7 repos v ... 
- 深入了解java虚拟机(JVM) 第五章 如何判断对象为垃圾对象
			本章开始学习垃圾回收的过程,垃圾回收的过程首先就是要确定对象是否是垃圾对象,如果是垃圾对象,垃圾回收器才会进行回收.垃圾回收主要又两种算法:引用计数算法和可达性分析算法. 一.引用计数算法 引用计数算 ... 
- redis 限制接口访问频率
			代码: <?php /** * */ class myRedis { private static $redis = null; /** * @return null|Redis */ publ ... 
- jmeter性能测试指标
			1.jp@gc - Actiive Threads Over Time:不同时间的活动用户数量展示(图表) 当前的时间间隔是1毫秒,在setting中可以设置时间间隔以及其他的参数 2.jp@gc - ... 
- 集成 jpush-react-native 常见问题汇总 (iOS 篇)
			给 iOS 应用添加推送功能是一件比较麻烦的事情,本篇文章收集了集成 jpush-react-native 的常见问题,目的是为了帮助用户更好地排查问题 1. 收不到推送 确保是在真机上测试,而不是在 ... 
- git恢复到上次提交
			4个区 5种状态 未修改(Origin) 已修改(Modified) 已暂存(Staged) 已提交(Committed) 已推送(Pushed) 检查修改 已修改,未暂存(检查工作区与暂存区间的差异 ... 
- Windows 64位操作系统下安装和配置MySQL
			一安装方式 MySQL安装文件分为两种,一种是MSI格式的,一种是ZIP格式的.下面来看看这两种方式: MSI格式的可以直接点击安装,按照它给出的安装提示进行安装,Windows操作系统下一般MySQ ... 
