Spring

  • Spring 特点:
  •  1.轻量级:从大小与开销两方面而言都是经典的, 完整的spring框架可以在一个大小只有1M多的JAR文件里发布,
    
  •  并且Spring所需的处理开销也是微不足道的, 此外, Spring是非侵入性 的, 典型的, Spring应用中的对象不依赖于Spring的特定类
    
  •  2.控制反转:Spring通过一种称作控制反转IOC的技术促进了低耦合,当应用了IOC,一个对象依赖的其他对象会通过被动的方式传递进来,
    
  •  而不是这个对象自己创建或查找依赖对象
    
  •  3.面向切面:Spring 支持面向切面的编程, 并且把应用业务逻辑和系统服务分开
    
  •  4.容器: Spring 包含并管理应用对象的配置和生命周期, 在这个意义上它是一种容器, 你可以配置你的每个bean如何被创建, 基于一个可
    
  •  配置原型, 你的bean可以创建一个单独的实例或者每次需要是都生成一个新的实例,以及他们是如何相互关联的
    
  •  5.框架:Spring 可以将简单的组件配置, 组合为复杂的应用, 在Spring中,应用对象被声明式的组合, 典型的是在一个XML
    
  •  文件里, Spring 也提供了很多基础功能, (事务管理、持久化框架集成等,)将应用逻辑的开发留给开发者
    
  • Spring 核心组件:
  •  Data Access/Integration: JDBC ,ORM,OXM ,JMX ,Transactions
    
  •  Web(MVC/Remoting) :Web,Servlet, Portlet, Struts
    
  •  AOP
    
  •  Aspects
    
  •  Instrumentation
    
  •  Core Container: Beans , Core,Context,Expression Language
    
  •  Test
    

*Spring 常用模块:

  •  1.核心容器:核心容器提供Spring框架的基本功能, 核心容器的主要组件是BeanFactory, 它是工厂模式的实现, BeanFactory使用
    
  •  控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开
    
  •  2.Spring上下文:Spirng上下文是一个配置文件, 向Spring 框架提供上下文信息, Spring 上下文包括企业服务,
    
  •  列如:JNDI,EJB,电子邮件,国际化,校验和调度功能
    
  •  3.Spring Aop:通过配置管理特性, Spring AOP 模块直接将面向切面的编程功能集成到了Spring 框架中,可以将一些通用任务, 如
    
  •  安全, 事务, 日志等集中进行了管理, 提高了复用性和管理的便捷性
    
  •  4.Spring Dao 为JDBC Dao 抽象层提供了有意义的异常层次结构, 可用该结构来管理异常处理和不同数据库供应商的错误信息,
    
  •  异常层次结构简化了错误处理,并且极大地减低里需要编写的异常代码数量, (列如打开和关闭连接),Spring Dao
    
  •  的面向JDBC的异常遵从通用DAO异常层次结构
    
  •  5.Spring ORM Spring 框架插入了若干个ORM框架, 从而提供了 ORM的对象关系工具 ,其中包括JDO,Hibernate,
    
  •  iBatis SQL Map ,所有这些都遵从Spring 的通用事务和DAO异常层次结构
    
  •  6.Spring Web模块: Web上下文模块建立在应用程序上下文模块之上, 为基于Web的应用程序提供了 上下文,所以, Spring
    
  •  框架支持与Jakarta Struts 的集成,Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作
    
  •  7. Spring MVC框架:MVC框架是一个全功能的Web应用程序的MVC 实现, 通过策略接口, MVC框架变成诶高度可配置的,
    
  •  MVC容纳了大量视图技术,其中包括JSP,Veloctiy,Tiles,Itext和POI;
    
  • 主要jiar包:
  •  1.core:Spirng的核心工具包, 其他包依赖此包
    
  •  2.beans:所有应用都用到, 包含配置文件, 创建和管理bean都能
    
  •  3.aop:Spring 的面向切面编程,提供AOP的实现
    
  •  4.context:提供在基础IOC功能上的扩展服务, 此外还提供许多企业级服务的支持, 有邮件服务, 任务调度, JNDI定位,
    
  •  EBJ集成,远程访问,缓存以及多种视图框架的支持
    
  •  5.web.mvc:包含Spring MVC应用开发时 所需的核心类
    
  •  6.transaction:为JDBC,HIBERNATE,JDO,JPA提供一致性的声明式和编程是事务管理
    
  •  7.web:包含Web应用开发时, 用Spring 框架时所需的核心类
    
  •  8.aspects:Spirng提供的对 AspectJ框架的整合
    
  •  9.test:对JUNIT 等测试框架的 简单封装
    
  •  10.asm: Spring 3.0开始提供自己的独立的asm.jar包
    
  •  11.context.support:Spring context 的扩展支持,用于MVC 方面
    
  •  12.expression: Spring表达式语言
    
  •  13.instrument.tomcat:Spring 对tomcat 连接池的集成
    
  •  14.instrument:Spring对服务器端代理接口
    
  •  15.jdbc:对jdbc的简单封装
    
  •  16.jms:为简化jms api 的使用而做简单的封装
    
  •  17.orm:整合第三方的orm实现,如hibernate,ibatis,jdo,jpa等
    
  •  18.oxm:Spring对于object、xml映射的支持, 可以让java与XML来回切换
    
  •  19.web.portlet:Spring MVC的增强
    
  •  20.servlet: 对 servlet3.0的支持
    
  •  21.web.struts:整合对struts框架的支持, 更方便更容易的集成Struts框架
    

*Spring 常用注解

  •  bean注入和装配的方式有很多种, 可以通过xml,get ,set方式, 构造函数, 或者注解等 ,简单易用的方式就是使用
    
  •  Spring 的注解了, Spring 提供了大量的注解方式
    
  •  1.
    
  •  @Controller: 用于标注控制层组件,@Controller用于标记在一个类上, 使用它标记的类就是一个SpringMVC
    
  •  Controller对象, 分发处理器将会扫描使用了该注解的类的方法, 并检测该方法是否使用@RequestMapping注解
    
  •  可以把Request请求header部分的值绑定到方法的参数上
    
  •  @RestController: 相当与@Controller和 @ResponseBody 的组合效果
    
  •  @Component 泛指组件,当组件不好归类的时候, 我们可以使用这个注解进行标注
    
  •  @Respository 用于注解dao层, 在daoimpl类上面注解
    
  •  @Service 用于标注业务层注解
    
  •  2.
    
  •  @ResposeBody 异步请求: 该注解用于将Controller的方法返回的对象, 通过适当的HttpMessageConveter转换
    
  •  为指定格式后,写入到Response对象的body数据去
    
  •  @RequsetMapping 一个用来处理请求地址映射的注解, 可用于类或方法上,用于类上, 表示类中所有的响应请求的方法
    
  •  都是以该地址作为父路径
    
  •  @Autowired 他可以对类成员变量, 方法以及构造器 进行标注, 完成自动装配的工作, 通过@Artowired的使用来消除set,
    
  •  get方法
    
  •  @PathVariable  用于将请求的url 的模块变量映射到功能处理方法的参数上, 既取出url模板中的变量作为参数
    
  •  @RequestParm 主要用在SpringMvc后台控制层获取参数,类似一种是request.getParameter("name")
    
  •  @RequestHeader 可以把Request请求header 部分的值绑定到方法的参数上
    
  •  3.
    
  •  @ModelAttribute 该Controller的所有方法在调用前,先执行此@ModelAttribute 方法,可用于注解和方法参数
    
  •  中,可以把这个@ModelAttribute特性,应用在BaseController 当中,所有的Controller继承BaseController,
    
  •  既可实现在调用Controller时,先执行
    
  •  @SessionAttribute 既将值放到session 作用域中 , 写在class 上,
    
  •  @Valid 实现数据校验, 可以结合 hibernate validator一起使用
    
  •  @CookieValue 用来获取Cookie 中的值
    

*Spirng IOC原理

  •  概念:
    
  •  Spirng 通过一个配置文件描述Bean及Bean之间的依赖,利用java语言的反射 功能实例化Bean并建立Bean
    
  •  之间的依赖关系,Spring 的IOC 容器在完成这些底层工作的基础上,还提供了Bean实例缓存, 生命周期管理,
    
  •  Bean实例管理, 事件发布, 资源装载等高级服务
    
  •  Spring容器高层视图:
    
  •  Spring 启动时读取应用程序提供 的Bean配置信息,并在Spring 容器中生成一份相应的Bean配置注册表,
    
  •  然后根据这张注册 表实例化Bean ,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境,其中Bean 缓存池为HashMap实现
    
  •  IOC容器实现:
    
  •  BeanFactory 框架基础设施
    
  •  BeanFactory是Spring 框架  的基础设施, 面向Spring本身;ApplicationContext面向使用Spirng框架的开发者
    
  •  ,几乎所有的应用场合我们都直接使用ApplicationContext而非底层的BeanFactory
    
  •  1.1 BeanDefinitionRegistry注册表
    
  •  1.Spring配置文件中每一个节点元素在Spring容器里都通过一个BeanDefinition对象表示, 它描述了Bean的
    
  •  配置信息, 而BeanDefinitionRegistry 接口提供了向容器手动注册BeanDefinition 对象的方法
    
  •  1.2 BeanFactory顶层接口
    
  •  2.位于类结构树的顶端, 它最主要的方法就是getBean(String beanName),该方法从容器中返回特定名称的Bean
    
  •  BeanFactory的功能通过其他的接口得到不断扩张
    
  •  1.3 listableBeanFactory
    
  •  3.该接口定义了访问容器的Bean基本信息的若干方法,如查看Bean的个数,获取某一类型Bean的配置名,查看容器
    
  •  中是否包括某一Bean等方法
    
  •  1.4.HierarchicalBeanFactory父子级联
    
  •  4.父子级联 IOC容器的接口,子容器可以通过接口方法访问父容器, 通过HierarchicalBeanFactory接口, Spring
    
  •  的IOC容器可以换建立父子层级关联的容器体系, 子容器可以访问父容器的Bean,但父容器不能访问子容器的Bean
    
  •  Spring 使用父子容器实现了很多功能, 比如在Spring MVC 中, 展现层Bean位于一个子容器中, 而 业务层和
    
  •  持久层的Bean 位于父容器中, 这样, 展现层Bean 就可以引用业务层和持久层 的Bean,而业务层和持久层的
    
  •  Bean就可以引用业务层和持久层的 Bean ,而业务层和持久层的Bean 则看不到展现层的Bean
    
  •  1.5 ConfigurableBeanFactory
    
  •  5.是一个重要的接口, 增强了IOC容器的可定制性,它定义了设置类装载器,属性编辑器, 容器初始化后置处理器等方法
    
  •  1.6 AutowireCapableBeanFactory 自动装配
    
  •  6.定义了将容器中的Bean 按某种规则(如按名字匹配,按类型匹配的等) 进行自动装配的方法
    
  •  1.7 SingletonBeanRegistry 运行期间注册单例Bean
    
  •  7.定义了允许在运行期间向容器注册单单实例Bean的方法, 对于单实例(singleton) 的Bean来说, BeanFactory
    
  •  会缓存Bean实例, 所以第二次使用getBean()获取Bean时将直接从IOC容器的缓存中获取Bean实例, Spring在
    
  •  DefaultSingletonBeanRegistry类中提供了一个用于缓存但实例Bean的缓存器,它是一个用HashMap实现的缓存器,
    
  •  单实例的Bean以beanName 为键保存在这个HashMap中
    
  •  1.8依赖日志框架
    
  •  8. 在初始化BeanFactory 时, 必须为其提供一种日志框架, 比如使用Logj,既在类路径下提供Log4J 配置文件,
    
  •  这样启动Spring容器才不会报错
    
  •  ApplicationContext 面向开发应用
    
  •  ApplicationContext有 BeanFactory派生而来,提供了更多面向实际应用的功能, ApplicationContext 继承了HierarchicalBeanFactory
    
  •  和ListableBeanFactory接口, 在此基础上,还通过多个其他的接口扩展了BeanFactory的功能
    
  •  ClassPathXMLApplicationContext :默认从类路径中加载配置文件
    
  •  FileSystemXMLApplicationContext
    
  •  ApplicationEventPublisher
    
  •  MessageSource
    
  •  ResourcePatternResolver
    
  •  LifeCycle:该接口提供了start()和stop方法 注意用眼控制异步处理过程, ApplicationContext 会将start、stop
    
  •  的信息传递给容器中所有实现了该接口的Bean , 以达到管理和控制JMX,任务调度等目的
    
  •  ConfigurableApplicationContext
    
  •  WebApplication体系架构
    
  •  WebApplicationContext是专门为Web应用准备的, 它允许
    
  •  Spring Bean 作用域
    
  •  1.Singleton
    
  •  2.prototype
    
  •  3.request
    
  •  4.session
    
  •  5.global session
    
  •  Spring Bean的生命周期
    
  •  1.实例化
    
  •  2.IOC 依赖注入
    
  •  3.setBeanName实现
    
  •  4.BeanFactoryAware 实现
    
  •  5.ApplicationContextAware实现
    
  •  6.postProcessBeforeInitialization
    
  •  7.init-method
    
  •  8.postProcessAfterInitialization
    
  •  9.Destroy 过期自动清理阶段
    
  •  10.destroy-method 自动配置清理
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值