Spring学习(一)初识Spring

记录自己在spring中的学习情况,文章里有自己学习的理解和扩展,新手难免有理解偏差或者错误,恳请大佬指正。学习资料来源于itnanls。

spring框架是Java应用最广的框架,它的理念包括IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)

spring常用术语

框架:是能完成一定功能的半成品。

  • 框架能够帮我们完成:项目的整体框架、部分基础功能、规定了类和对象如何创建、如何协作等。

非侵入式设计

  • 从框架的角度可以理解为:无需继承框架提供的任何类

  • 这样我们在更换框架的时候,之前写过的代码几乎可以继续使用

轻量级和重量级

  • 轻量级是相对于重量级而言的,轻量级一般就是非侵入性的、所依赖的东西非常少、资源占用非常少、部署简单等等,其实就是比较容易使用,而重量级则正好相反。
  1. javaBean

    javabean是一种java语言写成的可重用组件。为写成JavaBean,类必须是具体和公共的,并且具有无参的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。更多的是一种规范,即包含一组set和get方法的java对象。javaBean可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分开,降低开发的复杂程度和维护成本。

  2. pojo(Plain Ordinary Java Object)

    简单的java对象,实际上就是普通的JavaBeans,是为了避免和EJB(太重了)混淆所创造的简称。

    其中有一些属性及其getter、setter方法的类,没有业务逻辑,有时可以作为VO(value-object)或DTO(Data Transfer Object)来使用,不允许有业务方法,也不能携带connection之类的方法。

    与javaBean的区别:javaBean是可复用的组件,对javaBean并没有严格的规范,理论上来说,任何一个java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器创建的,所以JavaBean应具有一个无参的构造器。另外,通常JavaBean还要实现Serializable接口用于实现Bean的持久性。一般在Web应用程序中建立一个数据库的映射对象时,我们只能称其为Pojo。用来强调他是一个普通的对象,而不是一个特殊的对象,其主要用来指代那些没有遵从特定的java对象模型、约定或者框架(如EJB)的java对象。理想的是一个pojo是一个不受任何限制的java对象。

  3. entity

    实体Bean,一般是用于ORM对象关系映射,一个实体映射成一张表,一般无业务逻辑代码。

    负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个EntityBean对象相当于创建一条记录,删除一个EntityBean对象会同时从数据库中删除对应记录,修改一个EntityBean时,容器会自动将EntityBean的状态和数据库同步。

传统javabean与spring中的bean的区别

  • javabean不常用了。Springbean可以说是javabean的发展,但是已经完全不一样了。

  • 用处不同:传统javabean更多地是作为值传递参数,而Spring中的Bean用处几乎无处不在,任何组件都可以被称为Bean。

  • 用处不同:传统javabean更多地作为值传递参数,而spring中的bean用处几乎无处不在,任何组件都可

    以被称为bean。

  • 写法不同:传统javabean作为值对象,要求每个属性都提供getter和setter方法;但spring中的bean只需为接受设值注入的属性提供setter方法。

  • 生命周期不同:传统javabean作为值对象传递,不接受任何容器管理其生命周期;spring中的bean有spring管理其生命周期行为。所有可以被spring容器实例化并管理的java类都可以称为bean。原来服务器处理页面返回的值都是直接使用request对象,后来增加了javabean来管理对象,所有页面值只要是和javabean对应,就可以用类.GET属性方法来获取值。javabean不只可以传参数,也可以处理数据,相当与把一个服务器执行的类放到了页面上,使对象管理相对不那么乱(对比asp的时候所有内容都在页面上完成)。

  • spring中的bean,是通过配置文件、javaconfig等的设置,有spring自动实例化,用完后自动销毁的对象。让我们只需要在用的时候使用对象就可以,不用考虑如果创建类对象(这就是spring的注入)。一般是用在服务器端代码的执行上。

spring的优势

  • 低侵入/低耦合(降低组件之间的耦合度,实现软件各层之间的解耦)
  • 声明式事务管理(基于切面和惯例)
  • 方便集成其他框架(如mybatis、Hibernate)
  • 降低Java开发难度
  • spring框架中包括了J2EE三层的每一层的解决方案(一站式)

spring能帮我们做什么

  • 根据配置文件创建及组装对象之间的依赖关系。
  • 面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制
  • 十分简单地帮我们管理数据库事务
  • spring还提供了第三方数据访问框架(如Hibernate、JPA)无缝集成,而自己也提供了一套JDBC访问模板来方便访问数据库。
  • spring还提供与第三方web(如Struts1/2、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
  • spring还能方便地与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。

spring的框架结构

在这里插入图片描述

核心容器(spring core)

核心容器提供spring框架的基本功能。spring以Bean方式组织和管理Java应用中的各个组件及其关系。Spring使用BeanFactory来产生和管理Bean,它是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开。

BeanFactory使用依赖注入的方式提供给组件依赖。

Spring面向切面编程(AOP)

通过配置管理特性,Spring AOP模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何对象支持AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖EIB组件,就可以将声明性事务管理集成到应用程序中。

Spring上下文

Spring上下文是一个配置文件,向spring框架提供上下文信息。Spring上下文包括企业服务、如JNDI、EJB、电子邮件、国际化、校验和调度功能。

Spring DAO模块

DAO模式主要目的是将持久层相关问题与一般的业务规则和工作流隔离开来。Spring中的DAO提供一致的方式访问数据库,不管采用何种持久化技术,Spring都提供一致的编程模型。Spring还对不同的持久层技术提供一致的DAO方式的异常层次结构。

Spring ORM模块

spring与所有的主要的ORM映射框架都集成的很好,包括Hibernate、JDO实现、TopLink和IBatis SQL Map等。Spring为所有的这些框架提供了模板之类的辅助类,达成了一致的编程风格。

Spring Web模块

Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web层使用Web层框架,可选的,可以是Spring自己的MVC框架,或者提供的Web框架如Struts、Webwork、tapestry和jsf。

Spring MVC框架(Spring Web MVC)

MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置

的。Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发

器、处理器映射和视图解析器。Spring支持多种视图技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值