20171207-学习日记

Spring框架旨在简化企业级应用开发,其核心功能包括依赖注入(IOC)和面向切面编程(AOP),支持低侵入式设计,易于测试,提供一致的数据访问框架。Spring通过模块化设计,覆盖了从核心容器到Web MVC的广泛功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring主要是为了解决企业应用开发的复杂性而诞生的。

IOC-轻量级控制反转
AOP-面向切面的容器框架


目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB
范围:任何Java应用


优势:
1.定位的领域是许多其他流行的framework没有的
2.Spring是全面的和模块化的
3.它的设计从底部帮助编写易于测试的代码
4.Spring是潜在的一站式解决方案


优点:
1.低侵入式设计,代码污染极低
2.Write Once,Run Anywhere
3.DI有效的降低了耦合度
4.AOP提供了通用任务的集中管理
5.ORM和DAO简化了对数据库访问
6.高度开放性,并不强制(可以使用Spring框架的一部分或全部框架)


优点带来的好处:
1.可以有效组织中间层对象
2.使用统一的配置文件
3.促进良好的编程习惯,减少编程代价
4.易于单元测试
5.使EJB编程一种备选
6.为数据存取提供了一致的框架


特点:
1.方便解耦,简化开发
2.AOP编程的支持
3.声明式事务的支持
4.方便程序测试
5.方便集成各种优秀的框架
6.降低J2EE API的使用难度
7.Spring的源码是经典学习范例


核心模块:
1. 核心容器(Spring Core)
2.应用上下文(Spring Context)
3.AOP模块(Spring AOP)
4.JDBC和DAO模块(Spring DAO)
5.对象实体映射(Spring ORM)
6.Web模块(Spring Web)
7.MVC模块(Spring Web MVC)


IOC(Inversion of Control,控制反转)
由spring来负责控制对象的生命周期和对象间的关系:
1.传统开发模式:对象之间互相依赖
2.IOC开发模式:IOC容器安排对象之间的依赖

IOC(别称:依赖注入 Dependency Injection):由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中;指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦


IOC好处:
1.降低组件之间的耦合度
2.提高开发效率和产品质量
3.统一标准,提高模块的复用性
4.模块具有热插拨特性


IOC通俗理解:
IOC控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是在xml文件控制,侧重于原理
DI依赖注入:创建对象实例时,为这个对象注入属性值或其他对象实例,侧重于实现


AOP:
是OOP的延续,动态角度,专门用于处理系统中分布于各个模块中的交叉关注点的问题
AOP代理是由AOP框架动态生成的一个对象,该对象可作为目标对象使用

1.定义普通业务组件
2.定义切入点
3.定义增强处理


代理对象的方法 = 增强处理 + 被代理对象的方法


AOP关键概念解释:

切面 - Aspect
连接点 - Join Point
通知 - Advice
切入点 - Point Cut
引入 - Introduction
目标对象 - Target Object
AOP代理 - AOP Proxy
织入 - Weaving


核心开发包:
Spring Core
Spring Beans
Spring AOP
Spring Context


提供了各种企业级服务包:
Spring Aspects
Spring Context Support
Spring Expression
Spring Framework Bom
Spring Instrument
Spring Instrument Tomcat
Spring JDBC
Spring JMS
Spring orm
Spring oxm
Spring Struts
Spring test
Spring tx
Spring web
Spring webmvc
Spring webmvc portlet


创建一个基于Spring IOC的小程序的步骤:
1.建立Spring工程
2.编写Java文件
3.编写配置文件
4.运行示例工程


注入方法,分为三种类型:
1.构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入
2.属性注入:通过Setter方法完成调用类所需依赖的注入,更方便灵活
3.接口注入:将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供相应的注入方法


Java反射机制:
Java语言允许通过程序化的方式间接对Class的对象实力操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息


类装载器:
寻找类的字节码文件并构造出类在JVM内部表示的对象组件,主要工作由ClassLoader及其子类负责


工作机制:

1.装载:查找和导入Class文件
2.链接:执行校验,准备和解析步骤
3.初始化:对类的静态变量、静态代码块执行初始化工作


重要方法:
1.Class loadClass(String name)
2.Class defineClass(String name, byte[]b, int off, int len)
3.Class findSystemClass(String name)
4.Class findLoadedClass(String name)
5.ClassLoader getParent()


最主要的三个反射类:

1.Constructor - 类的构造函数反射类
2.Method - 类方法的反射类
  1.Class getReturnType() - 获取方法返回值类型
  2.Class[] getParameterTypes() - 获取方法的入参返回数组
  3.Class[] getExceptionTypes() - 获取方法的异常类型数组
  4.Annotation[][] getParameterAnnotations() - 获取方法的助理信息
3.Field - 类的成员变量的反射类


反射机制与IOC关系:
当需要更改实现类或参数信息时,只需要修改配置文件即可
IOC的实现原理利用的就是Java的反射机制,通过bean的名称获取对应的对象


Resource接口主要方法:
1.boolean exists() - 判断资源是否存在
2.boolean isOpen() - 判断资源是否打开
3.URL getURL() - 若底层资源可以表示成URL,该方法返回URL对象
4.File getFile() - 若底层资源对应一个文件,该方法返回对应的File对象
5.InputStream getInputStream() - 返回资源对应的输入流


Resource具体实现类:
1.ByteArrayResource - 二进制数组表示的资源
2.ClassPathResource - 类路径下面的资源
3.FileSystemResource - 文件系统资源,资源文件以文件系统路径的方式来表示
4.InputStreamResource - 对应一个InputStream的资源
5.ServletContextResource - 为了访问Web容器上下文中的资源
6.UrlResource - 使用户能够访问任何通过URL表示的资源


资源类型地址前缀:
1.classpath classpath:com/jike/bean.xml
2.File file:/com/jike/bean.xml
3.http:// http://www.jike.com/bean.xml
4.ftp ftp://www.jike.com/bean.xml
5.无前缀 com/jike/bean.xml


Ant风格的匹配符:

1.?:匹配文件名中的一个字符
2.*:匹配文件名中的任意字符
3.**:匹配多层路径


Ant风格的资源路径示例:
1.Classpath:com/t*st.xml
2.File:D:/conf/*.xml
3.Classpath:com/**/test.xml
4.Classpath:org/springframework/**/*.xml


BeanFactory是Spring框架最核心的借口,它提供了高级IOC的配置机制,基础设施,面对Spring本身的


类体系结构:
1.XmlBeanFactory
2.ListableBeanFactory
3.HierarhicalBeanFactory
4.ConfigurableBeanFactory
5.AutowireCapableBeanFactory
6.SingletonBeanFactory
7.BeanDefinitionRegistry


初始化顺序:
1.创建配置文件
2.装载配置文件
3.启动IOC容器
4.获取Bean实例


ApplicationContext的实现类以及类体系结构:

1.ClassPathXmlApplicationContext - 默认从类路径加载配置文件
2.FileSystemXmlApplicContext - 默认从文件系统中加载配置文件
3.ConfigurableApplicationContext - 启动、刷新、关闭应用上下文


扩展接口:

1.ApplicationEventPublisher
2.MessageSource
3.ResourcePatternResolver
4.LifeCycle


根据配置文件路径不同可以选择不同的实现类加载:
1.ClassPathXmlApplicationContext
2.FileSystemXmlApplicContext
3.Bean的实例化问题


Bean生命周期由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值