spring学习笔记(一) Spring概述

时间:2022-05-03 23:03:43

博主Spring学习笔记整理大部分内容来自Spring实战(第四版)这本书.  强烈建议新手购入或者需要电子书的留言.

在学习Spring之前,我们要了解这么几个问题:什么是Spring?Spring的优势在哪里?怎么系统的学习Spring?

一.什么是Spring?

Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。

那有人就会问了,Spring是如何简化开发的?

在传统开发中,一个应用是需要用到很多很多的对象去协作完成的,所以除了业务逻辑的编写,我们更多的是需要去关注如何使用这些对象在低耦合的情况下去完成这些逻辑的相互协作.但是问题来了,传统开发中我们用到一个方法,都要先new这个对象,然后去调用这个方法,这样就大大的增加了对象之间的耦合性. 一个对象的的错误可能导致整个功能或者大模块的瘫痪.但是Spring祛除了这点,他把创建对象的的权利教给了容器(Spring容器),大大的降低了对象之间的依赖.  举例: 十几年前我们去买饮料需要把钱给店员,然后他那给我们,如果店员人不在,我们自己去拿饮料就是犯法.现在不同了,有了自动售货机,我们不用经过店员这一步了,Spring一方面的优势就是不用去new对象了.

二.Spring的优势在哪里?

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  • 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
  • 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
  • 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
  • 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
  • 框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

三.怎么系统的学习Spring?

看书写笔记比什么都好,不要通过网上一块一块的学,很容易乱的.最好的方法是:一本书,一个本,一个成型的SSM项目.

下面进入正题,跟着博主学Spring.

Spring学习分为四部分.

第一部分: Spring的核心: 会介绍DI(依赖注入),AOP(切面编程),DI的三种装配方式(基于XML,装配,基于java装配,自动装配,),几种高级装配,

第二部分:利用Spring来构建一个Web应用程序. SpringMVC(Spring的Web基础框架)基础知识 .

  • 介绍如何编写控制器来处理请求,并使用模型数据产生响应.
  • 控制器的工作完成后,模型数据必须用一个视图进行渲染,会详细介绍Spring中可以使用的各种视图技术:JSP,Apache Tiles 以及Thymeleaf.
  • 之后会讲解如何使用Spring MVC配置,处理multipart;类型的文件上传,处理在控制器中可能出现的异常并且会通过flash属性在请求之间传递数据.
  • 介绍Spring MVC的扩展Spring  Web Flow  是一个能够开发会话式的Web应用程序.
  • 学习如何使用Spring Security为自己的应用程序Web层实现安全性.

第三部分:如何处理和持久化数据

  • 介绍Spring对JDBC的抽象实现关系型数据库中的数据持久化.
  • 使用JAVA持久化(JPA)存储关系数据库中的数据.
  • 介绍Spring与非关系型数据库的结合使用,如MongoDB和Neo4J
  • 介绍Spring对声明式缓存额支持.
  • 介绍如何通过AOP将安全性应用到方法级别.

第四本分介绍Spring应用程序与其他系统进行集成.

  • 学习如何创建与使用远程服务,包括RMI,Hessian,Buriap以及基于SOAP的服务.
  • 学习如何创建RESTful服务
  • 介绍对Spring对异步消息的支持,包括JAVA消息服务(JAVA Message Service,JMS)以及高级消息队列协议(Advanced Message Queuing Protocol,AMQP)
  • 如何使用Spring发送Email
  • Spring对JAVA的管理拓展(JMX)功能的支持,借助这个功能可以对Spring应用程序进行监控和修改运行配置.
  • 介绍Spring Boot  去除样板式配置.

spring学习笔记(一) Spring概述的更多相关文章

  1. Java架构师之路 Spring学习笔记(一) Spring介绍

    前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...

  2. Spring 学习笔记(2) Spring Bean

    一.IoC 容器 IoC 容器是 Spring 的核心,Spring 通过 IoC 容器来管理对象的实例化和初始化(这些对象就是 Spring Bean),以及对象从创建到销毁的整个生命周期.也就是管 ...

  3. Spring学习笔记之Spring概述

    概述   Spring是一个java应用最广的开源框架,它是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Deve ...

  4. Spring学习笔记:Spring概述,第一个IoC依赖注入案例

    一.Spring的优点 企业及系统: 1.大规模:用户数量多.数据规模大.功能众多 2.性能和安全要求高 3.业务复杂 4.灵活应变 Java技术:高入侵式依赖EJB技术框架-->Spring框 ...

  5. [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction

    1.Spring中的数据库支持 把具有相同功能的代码模板抽取到一个工具类中.2.关于jdbc template的应用 jdbcTemplate模板操作类,把访问jdbc的模板抽取到template中, ...

  6. [Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。

    一.Spring Ioc容器详解(1) 20131105 1.一切都是Bean Bean可是一个字符串或者是数字,一般是一些业务组件. 粒度一般比较粗. 2.Bean的名称 xml配置文件中,id属性 ...

  7. Spring学习笔记之五----Spring MVC

    Spring MVC通常的执行流程是:当一个Web请求被发送给Spring MVC Application,Dispatcher Servlet接收到这个请求,通过HandlerMapping找到Co ...

  8. Spring学习笔记之 Spring IOC容器(二) 之注入参数值,自动组件扫描方式,控制Bean实例化方式,使用注解方式

     本节主要内容:    1. 给MessageBean注入参数值    2. 测试Spring自动组件扫描方式    3. 如何控制ExampleBean实例化方式    4. 使用注解方式重构Jdb ...

  9. Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入

    本节主要内容:       1.实例化Spring容器示例    2.利用Spring容器创建JavaBean对象    3.如何控制Bean实例化    4.利用Spring实现bean属性sett ...

随机推荐

  1. 【USACO 2.3】Controlling Companies (递推)

    题意:A公司对B公司有控制权的条件是满足下面条件之一:A=B,A对B的股份超过50%,A控制的公司对B的股份之和超过50%. 分析:我把控制关系分个等级:第一级是直接的股份超过50%,第二级是至少需要 ...

  2. PHP二维数组排序(list_order)

    /** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderT ...

  3. &lbrack;原&rsqb;&lbrack;CSS3&rsqb;会动的盒子机器人

    [PC与移动端皆可]会动的盒子机器人 浏览器必须可以解析perspective属性. 在线:http://wangxinsheng.herokuapp.com/boxMan 代码: <!DOCT ...

  4. 国内ng学习网站

    Ngnice-国内ng学习网站2015-01-25 21:30 by 破狼, 534 阅读, 3 评论,收藏, 编辑 今天给angular新手介绍一个国内开源的ng学习网站http://www.ngn ...

  5. 1&period; Skippr

    Skippr 是一个超级简单的 jQuery 幻灯片插件.只是包括你的网页中引入 jquery.skippr.css 和 jquery.skippr.js 文件就能使用了.Skippr 能够自适应窗口 ...

  6. HDU 6034---Balala Power&excl;(搜索&plus;贪心)

    题目链接 Problem Description Talented Mr.Tang has n strings consisting of only lower case characters. He ...

  7. CSS3动画效果transition

    1.transition的浏览器支持情况 IE10+支持,IE6\7\8\9都不支持!目前,其他浏览器最新版本都支持,不需要再加前缀 -webkit- 之类的了 2. 还是一步一步说说怎么用trans ...

  8. C&num;获取Html中的图片元素路径

    使用Ueditor的时候把文章以HTML标签的方式存在数据库中,同时还要将文章的第一张图片的路径一并存入数据库,所以就需要在Html中获取第一个图片的路径,没有图片的话设置一个默认的图片.代码如下: ...

  9. C&num; read write ini file

    [DllImport("kernel32")] private static extern long WritePrivateProfileString(string sectio ...

  10. RefreshListView中onItemClick点击错位

    在使用RefreshListView的时候.发现有使用 /**** * parent.getAdapter().getItem(position)√ * adpter.getItem(id);√ * ...