Spring基础原理

一、Spring特点

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

二、Spring核心组件

image-20231031192654335

三、Spring常用模块

  • **核心容器:**核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,他是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
  • **Spring上下文:**Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能
  • **Spring AOP:**通过配置管理特性,Sping AOP模块直接将面向切面的编程功能集成到了Spring框架中。可以将一些通用任务,如安全、事务、日志等集中进行管理,提高了复用性和管理的便捷性
  • **Spring DAO:**为JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误信息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层次结构
  • **Spring ORM:**Spring框架插入了若干个ORM框架,从而提供了ORM的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从Spring的通用事务和DAO异常层次结构
  • **Spring Web:**Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。所以,Spring框架支持与Jakarts Struts的集成。Web模块还简化了处理多部份请求以及将请求参数绑定到域对象的工作
  • **Spring MVC:**MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成高度可配置的。MVC容纳了大量视图技术,其中包括JSP、Velocity、Tiles、iText和POI

四、Spring主要包

  • **org.springframework.core:**Spring的核心工具包,其他包依赖此包
  • **org.springframework.beans:**所有应用都用到,包含访问配置文件,创建和管理bean等
  • **org.springframework.aop:**Spring的面向切面编程,提供AOP(面向切面编程)的实现
  • **org.springframework.context:**提供在基础IOC功能上的扩展服务,此外还提供许多企业级服务的支持,有邮件服务、任务调度、JNDI定位、EJB集成、远程访问、缓存以及多种视图层框架的支持
  • **org.springframework.mvc:**包含SpringMVC应用开发时所需的核心类
  • **org.springframework.transaction:**为JDBC、HIBERBATE、JDO、JPA提供一致的声明式和编程式事务管理
  • **org.springframework.web:**包含Web应用开发时,用到Spring框架时所需的核心类
  • **org.springframework.aspects:**Spring提供的对AspectJ框架的集合
  • **org.springframework.test:**对JUNIT等测试框架的简单封装
  • **org.springframework.asm:**Spring3.0开始提供自己独立的asm jar包
  • **org.springframework.supprot:**Spring context的扩展支持,用于MVC方面
  • **org.springframework.expression:**Spring的表达式语言
  • **org.springframework.tomcat:**Spring对tomcat连接池的集成
  • **org.springframework.instrument:**Spring对服务器的代理接口
  • **org.springframework.jdbc:**对JDBC的简单封装
  • **org.springframework.jms:**为简化jms api的使用而做的简单分装
  • **org.springframework.orm:**整合第三方的orm实现,如hibermate,ibatis,jdo,jpa等
  • **org.springframework.oxm:**Spring对于object/xml映射的支持,可以让JAVA与XML来回切换
  • **org.springframework.web.portlet:**Spring MVC的增强
  • **org.springframework.servlet:**对J2EE6.0 servlet3.0的支持
  • **org.springframework.struts:**整合对struts框架的支持,更方便更容易地集成struts框架

五、Spring常用注解

  • @Controller:
    • 用于标注控制层组件
    • @Controller用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller对象
    • 分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解
    • 可以把Request请求header部分的值绑定到方法的参数上
  • **@RestController:**相当于@Controller和@ResponseBody的组合效果
  • **@Component:**泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
  • **@Repository:**用于注解dao层,在daoImpl类上注解
  • **@Service:**用于标注业务层组件
  • @ResponseBody:
    • 异步请求
    • 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换操作为指定格式后,写入到Response对象的body数据区
    • 返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用
  • **@RequestMapping:**一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径
  • **@Autowired:**它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。通过@Autowired的使用来消除get、set方法
  • **@PathVariable:**用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出url模板中的变量作为参数
  • **@RequestParam:**主要用于在SpringMVC后台控制层获取参数,类似request.getParameter(“name”)
  • **@RequestHeader:**可以把Request请求header部分的值绑定到方法的参数上
  • **@ModelAttributes:**该Controller的所有方法在调用前,先执行@ModelAttribute方法,可用于注解和方法参数中,可以把这个@ModelAttribute特性应用在BaseController当中,所有的 Controller继承BaseController。即可实现在调用Controller时,先执行@ModelAttributes方法
  • **@SessionAttributes:**将值放到session作用域中,写在class上马
  • **@Valid:**实体数据校验,可以结合hibernate validator一起使用
  • **@CookieValue:**用来获取Cookie中的值

六、第三方框架集成

6.1 权限
  • Shiro
    • Java的一个安全框架
    • 认证、授权、加密、绘画股那里、与web集成、缓存
6.2 缓存
  • Ehcache:是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider
  • redis:一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库
6.3 持久层框架
  • Hibernate:一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架
  • Mybatis:支持普通SQL查询,存储过程和高级映射的优秀持久层框架
6.4 定时任务
  • Quartz:一个开源的作业调度框架,由Java编写,在.NET平台为Quartz.Net。通过Quartz可以快速完成任务调度的工作
  • Spring-Task:可以当作一个轻量级的Quartz,使用起来简单,除Spring相关的包外不需要额外的包,支持注解和配置文件两种形式
6.5 校验框架
  • Hibernate Validator:Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效
  • Oval:Oval是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs进行设定。可以使用纯Java语言、JavaScript、Groovv、BeanShell等进行规则的编写
    Oval是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs进行设定。可以使用纯Java语言、JavaScript、Groovv、BeanShell等进行规则的编写
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值