• Spring学习笔记1:概论


    内容部分来自于《Spring实战第4版》

    1:EJB与Spring的区别

    传统的EJB:高侵入性,需要实现框架的接口或继承类。
    Spring:轻量级,低侵入性,依靠xml配置等完成功能。

    2:Spring的并发问题

    当多个用户同时请求一个服务时,容器会给每一个请求分配一个线程,这时多个线程会并发执行该请求对应的业务逻辑(成员方法),此时需要注意,如果该处理逻辑中有对单例状态的修改(体现为该单例的成员属性),则必须考虑线程同步问题。

    有状态和无状态的bean:
    可以保存数据的bean:有状态,线程不安全
    固定不变的:无状态,线程安全。Dao层和Service层是无状态的(前提:外部没有全局变量)

    Spring装配bean默认加载的是singleton的,可以通过设置scope属性来调整。(对于有状态的bean可以设置为prototype,每次都会新建)
    (个人理解:每个线程有单独的区域,区域内有无状态bean的副本,与其他的线程区分开来。)

    Struts2和SpringMVC比较:struts2的action实质上是prototype的,每个请求生成一个action,保证了线程安全。

    SpringMVC通过一个前端控制器进行请求分发,属于单例,在必要时需要考虑并发。

    3:Spring容器

    Spring的容器类型:大致可以归纳为两类:bean工厂(BeanFactory)和应用上下文(ApplicationContext).
    BeanFactory较为低级,应用上下文是基于bean工厂实现的(常用)

    Spring通过应用上下文装载组装bean,根据不同的配置实现方式(xml或java配置等)选用不同的上下文进行加载。
    ClassPathXmlApplicationContext:类路径下加载xml实现加载上下文
    FileSystemXmlApplicationContext:系统文件路径加载xml

    在使用aop切面前需要将切面以及切点所在的类纳入spring的管理范围(声明为bean)

    spring自带的jdbctemplate模板类可以模板化jdbc的部分固定代码。

    BeanFactory和FactoryBean的区别
    都为接口。
    BeanFactory表示为生产bean的工厂,用于新建、配置bean等。
    FactoryBean表示为工厂bean(spring中bean有两种:普通bean和工厂bean),它本身由spring管理。
    也可以将其理解为生产、管理bean的bean。但是:通过spring获取factorybean时,返回的是该factorybean所管理的bean实体。如果需要获取factorybean本身,需要在名称前加&。
    例如:appleFactoryBean生产applebean,通过spring获取appleFatoryBean实际返回的是applebean,加上&返回appleFactoryBean。

     

    4:边角料
    OGNL表达式与EL表达式:
    OGNL通过#取值,主要用于struts2框架的取值塞值。#可以理解为struts2的ActionContext(实质为一个map,可以存储信息)
    EL表达式通过$取值,可以单独使用。

    与坚持梦想者同行
  • 相关阅读:
    TCP/IP 网路基础
    三、Django之请求与响应-Part 1
    二、Django快速安装
    Linux 优化详解
    缓存的正确使用方式
    HTML从入门到放弃
    Ansible开发之路
    程序猿数据库学习指南
    MySQL错误代码大全
    Python之网络编程
  • 原文地址:https://www.cnblogs.com/ForsakenCoder/p/9623517.html
Copyright © 2020-2023  润新知