慕课网_《Spring入门篇》学习总结
《Spring入门篇》学习总结
时间:2017年1月18日星期三
说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com
教学示例源码:https://github.com/zccodere/s...
个人学习源码:https://github.com/zccodere/s...
第一章:概述
1-1 Spring 入门课程简介
本门课程包含的内容
什么是框架
Spring简介 IOC(配置、注解) Bean(配置、注解) AOP(配置、注解、AspetJ、API)
如何学习Spring
掌握用法 深入理解 不断实践 反复总结 再次深入理解与实践
1-2 Spring概况
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功能:如:对消息的支持等 在互联网中的应用
1-3 Spring框架
框架
什么是框架
为什么使用框架
软件系统日趋复杂 重用度高,开发效率和质量提高 软件设计人员要专注于对领域的了解,使需求分析更充分 易于上手、快速解决问题
第二章:Spring IOC容器
2-1 IOC及Bean容器
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
2-2 Spring注入方式
Spring注入是指在启动Spring容器加载bean配置的时候,完成对变量的赋值行为 常用的两种注入方式 --设值注入 --构造注入
第三章:Spring Bean装配(上)
3-1 Spring Bean装配之Bean的配置项及作用域
3-2 Spring Bean装配之Bean的生命周期
定义 初始化 使用 销毁
3-3 Spring Bean装配之Aware接口
Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以获取相应资源 通过Aware接口,可以对Spring相应资源进行操作(一定要慎重) 为对Spring进行简单的扩展提供了方便的入口
3-4 Spring Bean装配之自动装配(Autowiring)
3-5 Spring Bean装配之自动装配(Resources)
第四章:Spring Bean装配(下)
4-1 Bean的定义及作用域的注解实现
4-2 AuTowired注解说明1
@Required注解适用于bean属性的setter方法
这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在bean定义或通过自动装配一个明确的属性值
4-5 @Bean注解
基于java的容器注解
@Bean标识一个用于配置和初始化一个由SpringIOC容器管理的新对象的方法,类似于XML配置文件的<bean/> 可以在Spring的@Component注解的类中使用@Bean注解任何方法(仅仅是可以),通常使用的是@Configuration
第五章:Spring AOP概念
5-1 AOP基本概念及特点
专题三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解决方案
5-2 配置切面aspect
<aop:config>风格的配置大量使用了Spring的自动代理机制
5-3 配置切入点pointcut
5-4 Advice应用(上)
5-5 Advice应用(下)
5-6 Introductions
Introductions
简介允许一个切面声明一个实现指定接口的通知对象,并且提供了一个接口实现类来代表这些对象。 由<aop:aspect>中的<aop:declare-parents>元素声明该元素用于声明所匹配的类型拥有一个新的parent(因此得名)
5-7 Advisors
Advisor就像一个小的自包含的方面,只有一个advice
切面自身通过一个bean表示,并且必须实现某个advice接口,同时,advice也可以很好的利用AspectJ的切入点表达式
Spring通过配置文件中<aop:advisor>元素支持advisor实际使用中,大多数情况下它会和transactional advice配合使用 为了定义一个advisor的优先级以便让advice可以有序,可以使用order属性来定义advisor的顺序
第六章:Spring AOP的API介绍
6-1 Spring AOP API的Pointcut、advice概念及应用
Spring AOP API
这是Soring1.2历史用法,现在(V4.0)仍然支持 这是SpringAOP基础,不得不了解 现在的用法也是基于历史的,只是更简便了
6-2 ProxyFactoryBean及相关内容(上)
6-3 ProxyFactoryBean及相关内容(下)
第七章:Spring对AspectJ的支持
7-1 AspectJ介绍及Pointcut注解应用
Aspect
1、@AspectJ切面使用@Aspect注解配置,拥有@Aspect的任何bean将被Spring自动识别并应用。 2、用@Aspect注解的类可以有方法和字段,他们也可能包括切入点(pointcut),通知(Advice)和引入(introduction)声明。 3、@Aspect注解是不能够通过类路径自动检测发现的,所以需要配合使用@Component注释或者在xml配置bean。
7-2 Advice定义及实例
7-3 Advice扩展
相关推荐
嗡汤圆 2019-09-10
gongpulin 2019-06-27
家辉 2019-06-27
Chydar 2019-06-27
QHJAVA 2019-06-27
青青木屋 2019-06-27
蓝蓝的天 2019-06-25
rually 2019-06-25
腊八粥 2019-06-25
itjavashuai 2019-06-25
ForMyQianDuan 2019-06-21
sqlican 2019-06-21
spring艳 2019-06-21
LeeEmmmm 2019-06-21
zyjj 2019-06-21
Code 2019-04-15
qiagu 2018-04-18