Java学习笔记:常用框架(Spring+SpringMVC+MyBatis+Knockout+Struts2+Hibernate)问题记叙

概念及优点

    1、 Spring

①Spring 是一个轻量级的IOC(控制反转)和AOP(面向切面)容器框架;

Spring 是非侵入性的,即在写业务代码的时候不需要继承Spring的一些特定的类,通过配置依赖注入就可以用,这就没有侵入我们的代码;

③Spring 是一个容器,包含并管理应用对象的生命周期和配置(管理对象:Spring不用去new对象,通过<bean id='' name=''>注入。生命周期:如对象的创建、销毁、回调。);

④Spring提供对事物的管理。(如:通过配置调用方法自动开启事物,不用每次都由程序员手动开启)

⑤Spring对主流的框架提供了很好的集成支持(如:和Hibernate、SpringMVC等框架的集成)

    2、SpringMVC

①SpringMVC 是基于MVC(Controller、View、Model)的框架,即控制器、视图、模型。该框架突出了HTTP协议中的请求/响应特性,在该框架中,用户的每一个请求都声明了一个需要执行的动作。而这主要是通过将每个请求URI映射到一个可执行的方法来实现。同时,也将请求参数映射到对应方法的参数。

②SpringMVC 是Spring的一个子项目

③SpringMVC 是给侵入性的。

④SpringMVC 的视图是不可知的,它并未规定我们必须可要使用哪种视图,可以根据自己的需求来,如JSP、Freemarker等

⑤提供了一种绑定机制,通过该机制可以从用户请求中提取数据,然后将数据转换为预定义的数据格式,最后映射到一个模型类,从而创建一个对象。该实现机制只需请求参数名称与Java类的属性相匹配即可

    3、MyBatis

MyBatis 是一个半自动化的持久化层框架,可以用来与数据库做映射,进行数据交互。

    4、 Knockout

①Knockout是一个基于MVVM模式的轻量级的前端框架

②能够友好地处理数据模型和界面DOM的绑定,最重要的是,它的绑定是双向的,也就是说数据模型变化了,界面DOM上的数据也会跟着发生变化,

    5、Struts2

① 基于MVC架构,框架结构清晰
② 使用OGNL:OGNL可以快速的访问值栈中的数据、调用值栈中对象的方法
③ 拦截器:struts2中的很多特性都是通过拦截器实现的,例如异常处理、文件上传、验证等。拦截器时可配置与重用的
④ 多种表现层技术,如:JSP、FreeMarker、Velocity等

    6、Hibernate

① 对JDBC访问数据库的代码进行了封装,简化了数据库访问层繁琐的重复性代码
② 映射的灵活性,它支持各种关系数据库,从一对一到多对多的各种复杂关系
③ 非侵入性、移植性会好
④ 缓存机制:提供一级缓存和二级缓存

  相关问题

Spring

(1)如何理解Spring的AOP和IOC?

IOC  控制反转  由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。就是控制权的转移,由程序员转移到配置里面。

AOP  面向切面编程,本质就是拦截器。 这个在项目中的事务以及日志中得到很好的体现。比如:项目中在数据库里进行增删改之前,都要开启事务,操作之后再关闭事务。这样我们就可以写一个拦截器,底层就是采用动态代理实现前置通知和后置通知,在前置通知中开启事务,在后置通知中提交事务,在spring.xml中配置通知即可,spring的事务管理底层就用到了AOP

(2)怎样定制bean的作用域,以及 作用域之间的区别?

定义bean的作用域,在<bean>中与一个scope的属性,取值有5种

① singleton:单例模式(默认),也就是说这种范围不管接收到多少个请求,每个容器中之后一个bean的实例。

② prototype:原型模式,和单例模式相反,为每一个bean请求提供一个实例。

③ request:针对每一次HTTP请求都会产生一个新的bean,并且该bean仅在当前request内有效,请求完成以后,bean会失效并被垃圾回收器回收

④ session:针对每一次HTTP请求都会产生一个新的bean,并且该bean仅在当前session内有效,session过期后,bean也会随之失效

⑤ Global session:global session和portlet应用相关,当你的应用部署在Portlet容器中工作时,如果你想让所有的portlet共用全局存储变量的话,就需要存储到global sessio

(3)什么是spring的自动装配?

Spring的自动装配:无须在Spring配置文件中描述javabean之间的依赖关系,IOC容器会自动建立JavaBean之间的关联关系。

① 根据属性名称自动装配autowire=”byName”

② 根据数据类型自动装配autowire=”byType”

③ 根据构造方法自动装配autowire=”constructor”

(4)怎么在spring中注入null或者空字符串?

注入null值:   <property name=”email”><null/></property>

注入空字符串:    <property name=”email” value=” ”></property>

(5)介绍一下spring的事务管理

首先明白为什么需要事务?比如:在ATM机上取钱,银行卡扣钱以及ATM机出钱,这两个动作要么都成功(我们拿到钱同时银行卡里扣除相应的金额),要么都失败(我们拿不到钱,银行卡里面也不扣钱),否则的会有一方就会吃亏。为了保证两个动作的一致性这就需要事务。

事务最重要的两个特性是事务的传播级别和数据隔离级别

传播级别:定义的是事务的控制范围,常用的就是PROPAGATION_REQUIRED

事务的隔离级别:定义的是事务在数据库读写方面的控制范围

事务的配置有两种方式:注解式事务和声明式事务

(6)Spring如何配置数据库驱动

① 使用c3p0数据库连接池技术

② 使用DriverManagerDataSource数据源来配置数据库驱动

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值