码迷,mamicode.com
首页 > 编程语言 > 详细

Spring部分

时间:2017-09-13 14:02:12      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:模式   lob   sso   aspect   请求   自动   erp   processor   动态   

Spring部分

1说说spring?

      spring的核心是控制反转、依赖注入,aop(面向切面)相当于把每个bean与bean之间的关系交给第 三方容器进行管理.

2说springioc、springvaop?

  spring IOC  相当于把每个bean与bean之间的关系交给第三方容器管理。而这个容器就是spring

  springaop  面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。 springaop 就是用 Javva的动态代理

 3、简述spring的优缺点?

   spring 的优点:

    1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦?

    2.可以使用容易提供的众多服务,如事务管理,消息服务等?

    3.容器提供单例模式支持

    4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能?

    5.容器提供了众多的辅助类,能加快应用的开发?

    6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等?

    7.spring属于低侵入式设计,代码的污染极低?

    8.独立于各种应用服务器?

    9.spring的DI机制降低了业务对象替换的复杂性?

    10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部?

  缺点:用到了大量的反射机制,执行效率比较低

4、spring的生命周期?

  Spring容器 从XML 文件中读取bean的定义,并实例化bean。

  Spring根据bean的定义填充所有的属性。

  如果bean实现了BeanNameAware 接口,Spring 传递bean 的ID 到 setBeanName方法。

  如果Bean 实现了 BeanFactoryAware 接口, Spring传递beanfactory 给setBeanFactory 方法。

  如果有任何与bean相关联的BeanPostProcessors,Spring会在postProcesserBeforeInitialization()方法内调用它们。

  如果bean实现IntializingBean了,调用它的afterPropertySet方法,如果bean声明了初始化方法,调用此初始化方法。

  如果有BeanPostProcessors 和bean 关联,这些bean的postProcessAfterInitialization() 方法将被调用。

  如果bean实现了 DisposableBean,它将调用destroy()方法。

5、Spring框架中的单例bean是线程安全的吗?

  不,Spring框架中的单例bean不是线程安全的。

6、说说spring的作用域

  singleton:在每个Spring IoC容器中一个bean定义对应一个对象实例。

  prototype:一个bean定义对应多个对象实例

  request:在一次HTTP请求中,一个bean定义对应一个实例;即每次HTTP请求将会有各自的bean实例, 它们依据某个bean定义创建而成。该作用域仅在基于web的Spring ApplicationContext 情形下有效。

  session:在一个HTTP Session 中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext 情形下有效。

  global session:在一个全局的HTTP Session 中,一个bean定义对应一个实例。典型情况下,仅在使用portlet context的时候有效。该作用域仅在基于web的Spring ApplicationContext 情形下有效。

7. @Required  注解

  这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。

8. @Autowired 注解

  @Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。

9. @Qualifier 注解

  当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。

10、Spring面向切面编程(AOP)

    a.  解释AOP

    面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。

    b. Aspect 切面

    AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。

    c.在Spring AOP 中,关注点和横切关注的区别是什么?

    关注点是应用中一个模块的行为,一个关注点可能会被定义成一个我们想实现的一个功能。
    横切关注点是一个关注点,此关注点是整个应用都会使用的功能,并影响整个应用,比如日志,安全和数据传输,几乎应用的每个模块都需要的功能。因此这些都属于横切关注点。

    d. 连接点

    连接点代表一个应用程序的某个位置,在这个位置我们可以插入一个AOP切面,它实际上是个应用程序执行Spring AOP的位置。

   e. 通知

    通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。

  Spring切面可以应用五种类型的通知:

    before:前置通知,在一个方法执行前被调用。

    after: 在方法执行之后调用的通知,无论方法执行是否成功。

    after-returning: 仅当方法成功完成后执行的通知。

    after-throwing: 在方法抛出异常退出时执行的通知。

    around: 在方法执行之前和之后调用的通知。

    f. 切点

     切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。

  g. 什么是引入? 

    引入允许我们在已存在的类中增加新的方法和属性。

  f. 什么是目标对象? 

    被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。

  g. 什么是代理?

    代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。

  h. 有几种不同类型的自动代理?

    BeanNameAutoProxyCreator

    DefaultAdvisorAutoProxyCreator

    Metadata autoproxying

Spring部分

标签:模式   lob   sso   aspect   请求   自动   erp   processor   动态   

原文地址:http://www.cnblogs.com/zhoupengbk/p/7514390.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!