zoukankan      html  css  js  c++  java
  • 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表达式通过$取值,可以单独使用。

    与坚持梦想者同行
  • 相关阅读:
    欧拉回路 定理
    UESTC 1087 【二分查找】
    POJ 3159 【朴素的差分约束】
    ZOJ 1232 【灵活运用FLOYD】 【图DP】
    POJ 3013 【需要一点点思维...】【乘法分配率】
    POJ 2502 【思维是朴素的最短路 卡输入和建图】
    POJ 2240 【这题貌似可以直接FLOYD 屌丝用SPFA通过枚举找正权值环 顺便学了下map】
    POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】
    POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】
    js 实现slider封装
  • 原文地址:https://www.cnblogs.com/ForsakenCoder/p/9623517.html
Copyright © 2011-2022 走看看