时间:2017年1月18日星期三
说明:本文部份内容均来自慕课网。@慕课网:http://www.imooc.com
教学示例源码:https://github.com/zccodere/s...
我的学习源码:https://github.com/zccodere/s...java
本门课程包含的内容git
什么是框架github
Spring简介 IOC(配置、注解) Bean(配置、注解) AOP(配置、注解、AspetJ、API)
如何学习Springspring
掌握用法 深刻理解 不断实践 反复总结 再次深刻理解与实践
Spring是什么编程
Spring是一个开源框架,为了解决企业应用开发的复杂性而建立的,但如今已经不止应用于企业应用。 是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架 --从大小与开销两方面而言Spring都是轻量的 --经过控制反转(IOC)的技术达到松耦合的目的 --提供了面向切面编程的丰富支持,容许经过分离应用的业务逻辑与系统级服务进行内聚性的开发。 --包含并管理应用对象的配置和生命周期,这个意义上是一种容器。 --将简单的组件配置、组合成为复杂的应用,这个意义上是框架
为何是Spring安全
在Spring上开发应用简单 在Spring上开发应用方便 在Spring上开发应用快捷
Spring带来了复杂JavaEE开发的春天框架
Spring做用性能
容器 提供了多种技术的支持 --JMS --MQ支持 --UnitTest AOP(事务管理、日志等) 提供了众多方便应用的辅助类(JDBC Template等) 对主流应用框架(Hibernate等)提供了良好的支持
适用范围学习
构建企业应用(SpringMVC+Spring+Hibernate/MyBatis) 单独使用Bean容器(Bean管理) 单独使用AOP进行切面处理 其余的Spring功能:如:对消息的支持等 在互联网中的应用
框架ui
什么是框架
为何使用框架
软件系统日趋复杂 重用度高,开发效率和质量提升 软件设计人员要专一于对领域的了解,使需求分析更充分 易于上手、快速解决问题
IOC
接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的经常使用注入方式
接口
用于沟通的中介物的抽象化 实体把本身提供给外界的一种抽象化说明,用以由内部操做分离出外部沟通方法,使其能被修改内部而不影响外界其余实体与其交互的方式 对应Java接口即声明,声明了哪些方法是对外公开提供的 在Java8中,接口能够拥有方法体
面向接口编程
结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层次仅依赖接口而非实现类 接口实现的变更不影响各层间的调用,这一点在公共服务中尤其重要 “面向接口编程”中的“接口”是用于影藏具体实现和实现多态性的组件
什么是IOC
IOC:控制反转,控制权的转移,应用程序自己不负责依赖对象的建立和维护,而是由外部容器负责建立和维护 DI(依赖注入)是其一种实现方式 目的:建立对象而且组装对象之间的关系
Spring的Bean配置
Bean容器初始化
基础:两个包 org.springframework.beans org.springframework.context BeanFactory提供配置结构和基本功能,加载并初始化Bean ApplicationContext保存了Bean对象并在Spring中被普遍使用方式,ApplicationContext 本地文件 Classpath Web应用中依赖servlet或Listener
Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为 经常使用的两种注入方式 --设值注入 --构造注入
定义 初始化 使用 销毁
Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化以后,能够获取相应资源 经过Aware接口,能够对Spring相应资源进行操做(必定要慎重) 为对Spring进行简单的扩展提供了方便的入口
@Required注解适用于bean属性的setter方法
这个注解仅仅表示,受影响的bean属性必须在配置时被填充,经过在bean定义或经过自动装配一个明确的属性值
基于java的容器注解
@Bean标识一个用于配置和初始化一个由SpringIOC容器管理的新对象的方法,相似于XML配置文件的<bean/> 能够在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是能够),一般使用的是@Configuration
专题三AOP
什么是AOP及实现方式 AOP基本概念 Spring中的AOP Schema-based AOP Spring AOP API AspectJ
什么是AOP
AOP:Aspect Oriented Programming的缩写,意为:面向切面编程,经过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。
AOP实现方式
预编译 AspectJ 运行期动态代理(JDK动态代理、CGLib动态代理) SpringAOP、JbossAOP
Spring框架中AOP的用途
提供了声明式的企业服务,特别是EJB的替代服务的声明 容许用户 定制本身的方面,以完成OOP与AOP的互补使用
Spring的AOP实现
纯java实现,无需特殊的编译过程,不须要控制类加载器层次 目前只支持方法执行链接点(通知Spring Bean的方法执行) 不是为了提供最完整的AOP实现(尽管它很是强大);而是侧重于提供一种AOP实现和Spring IOC容器之间的整合,用于帮助解决企业应用中的常见问题 Spring AOP不会与AspextJ竞争,从而提供综合全面的AOP解决方案
<aop:config>风格的配置大量使用了Spring的自动代理机制
Introductions
简介容许一个切面声明一个实现指定接口的通知对象,而且提供了一个接口实现类来表明这些对象。 由<aop:aspect>中的<aop:declare-parents>元素声明该元素用于声明所匹配的类型拥有一个新的parent(所以得名)
Advisor就像一个小的自包含的方面,只有一个advice
切面自身经过一个bean表示,而且必须实现某个advice接口,同时,advice也能够很好的利用AspectJ的切入点表达式
Spring经过配置文件中<aop:advisor>元素支持advisor实际使用中,大多数状况下它会和transactional advice配合使用 为了定义一个advisor的优先级以便让advice能够有序,可使用order属性来定义advisor的顺序
Spring AOP API
这是Soring1.2历史用法,如今(V4.0)仍然支持 这是SpringAOP基础,不得不了解 如今的用法也是基于历史的,只是更简便了
Aspect
一、@AspectJ切面使用@Aspect注解配置,拥有@Aspect的任何bean将被Spring自动识别并应用。 二、用@Aspect注解的类能够有方法和字段,他们也可能包括切入点(pointcut),通知(Advice)和引入(introduction)声明。 三、@Aspect注解是不可以经过类路径自动检测发现的,因此须要配合使用@Component注释或者在xml配置bean。