牛客网中Spring的理解

Spring官方文档:http://shouce.jb51.net/spring
依赖注入就是通过容器去管理对象,而不是对象本身去管理;
1、Spring中对IOC的理解:
所谓“控制反转”是指控制权由应用代码转到外部容器,即控制权的转移;
IoC将控制创建的职责搬进了框架中,从应用代码脱离开来;
使用Spring的IoC容器时只需指出组件需要的对象,在运行时Spring的IoC容器会根据XML配置数据提供给它;
控制反转即IoC (Inversion of Control),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
2、Spring中对AOP的理解:
AOP将散落在系统中的“方面”代码集中实现;
AOP有助于提高系统可维护性;
AOP是一种设计模式,Spring提供了一种实现;
AOP的概念是Aspected Oriented Programming 面向方面编程。
好处:AOP将程序分解成各个方面或者说关注点。这使得可以模块化,相当横向上分切了。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注
实现AOP有几种方式:

  1. Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvice等
  2. Spring 2.0 AOP需要改的是FBI 这个类,而且它也不需要再实现某些接口
  3. 三使用标注(@AspectJ)实现AOP
    3、基于Servlet API如何实现转向时不在地址栏中显示转向后的地址:forward ( )
    4、Springmvc和Struts2的区别:
    Springmvc的入口是servlet,而Struts2的入口是filter;
    Springmvc是基于方法的设计,而Struts2是基于类的设计;
    Springmvc用的是独立的AOP方式,Struts2有以自己的interceptor机制;
    Springmvc的方法之间基本上独立的,独享request response数据,Struts2所有Action变量是共享的;
    5、Servlet的理解:
    Servlet是一个特殊的Java类,它必须直接或间接实现Servlet接口;
    Servlet接口定义了Servelt的生命周期方法;
    当多个客户请求一个Servlet时,服务器为每一个客户启动一个线程;
    Servlet客户线程调用service方法响应客户的请求;
    6、Spring中对Bean的理解:
    如果Bean类有实现org.springframework.beans.factory.BeanFactoryAware接口,工厂调用setBeanFactory()方法传入工厂自身;
    在Spring中,Bean的scope默认是singleton的,也就是“单例”。一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例;
    可以在Bean定义文件中使用"init-method"属性,执行到这个阶段时,就会执行initBean()方法;
    如果Bean类有实现org.springframework.beans.factory.DisposableBean接口,则执行他的destroy()方法;
    7、Spring框架模块的理解:
    Spring Core:Core封装包是框架的最基础部分,提供IOC和依赖注入特性;
    AOP模块提供了AOP(拦截器)机制,并提供常用的拦截器,供用户自定义和配置;
    ORM模块值提供了常用的“对象/关系”映射APIs的集成层,并不包括spring自己的实现,spring自己的实现只定义在dao模块中;
    DAO模块Spring 提供对JDBC的支持,对JDBC进行封装,允许JDBC使用Spring资源,并能统一管理JDBC事物,并不对JDBC进行实现;
    8、Spring的理解:
    在Spring配置文件中,就可以设置Bean初始化函数和消亡函数;
    对象的设计应使类和构件之间的耦合最小;
    9、Spring依赖注入的理解:
    依赖注入通常有如下两种:设置注入和构造注入;
    构造注入可以在构造器中决定依赖关系的注入顺序,优先依赖的优先注入;
    在没有设值注入的情况下才会根据配置文件中的构造注入,一旦有设值注入,则构造注入失效;
    设值注入是指IoC容器使用属性的setter方法来注入被依赖的实例。这种注入方式比较简单、直观;
    10、Spring事务的理解:
    spring事务可以分为编程式事务和声明式事务;
    spring提供了一个事务的接口 PlatformTransactionManager接口,针对不同的事务,spring进行了不同的实现;
    声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码;
    如果应用中有大量的事务操作,可以使用声明式事务,简单且高效。如果事务操作很少,直接用编程;
    11、Springmvc中核心控制器DispatcherServlet的理解:
    它负责处理HTTP请求;
    加载配置文件;
    初始化上下应用对象ApplicationContext;
    12、Spring中事务传播特性的理解:
    PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行;
    PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择;
    PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起;
    PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚;
    13、Spring DAO的理解:
    Spring提供的DAO(数据访问对象)支持主要的目的是便于以标准的方式使用不同的数据访问技术;
    方便的事务管理: Spring的声明式事务管理力度是方法级别;Struts2是类级别的;
    异常包装:Spring能够包装Hibernate异常,把它们从CheckedException变为RuntimeException; 开发者可选择在恰当的层处理数据中不可恢复的异常,从而避免烦琐的 catch/throw 及异常声明;
    Spring提供的DAO支持了JDBC、JDO和Hibernate;
    14、Servlet中实现重定向的方法:
    运用javax.servlet.http.HttpServletRequest接口的sendRedirect方法;
    运用javax.servlet.RequestDispatcher接口的forward方法;
    运用javax.servlet.ResponseDispatcher接口的forward方法;
    15、Spring的PROPAGATION_REQUIRES_NEW事务的理解:
    内部事务回滚会导致外部事务回滚;
    外部事务回滚了,内部事务也跟着回滚;
    外部事务回滚了,内部事务仍然可以提交;
    16、Spring的理解:
    Spring是一系列轻量级Java EE框架的集合;
    Spring中包含一个“依赖注入”模式的实现;
    使用Spring可以实现声明式事务;
    17、Spring框架中的核心思想包括:
    依赖注入、控制反转、面向切面
    18、Spring框架中获取连接池的方式:
    DBCP数据源、C3P0数据源、Spring的数据源实现类(DriverManagerDataSource)、获取JNDI数据源。
    19、Spring中AOP的理解:
    AOP将散落在系统中的“方面”代码集中实现;
    AOP有助于提高系统可维护性;
    AOP是一种设计模式,Spring提供了一种实现;
    20、Spring的理解:
    Spring 不能和Hibernate一样设置bean是否为延迟加载;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rsun04551

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值