spring学习笔记(一) Spring概述
博主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概述的更多相关文章
- Java架构师之路 Spring学习笔记(一) Spring介绍
前言 这是一篇原创的Spring学习笔记.主要记录我学习Spring4.0的过程.本人有四年的Java Web开发经验,最近在面试中遇到面试官总会问一些简单但我不会的Java问题,让我觉得有必要重新审 ...
- Spring 学习笔记(2) Spring Bean
一.IoC 容器 IoC 容器是 Spring 的核心,Spring 通过 IoC 容器来管理对象的实例化和初始化(这些对象就是 Spring Bean),以及对象从创建到销毁的整个生命周期.也就是管 ...
- Spring学习笔记之Spring概述
概述 Spring是一个java应用最广的开源框架,它是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Deve ...
- Spring学习笔记:Spring概述,第一个IoC依赖注入案例
一.Spring的优点 企业及系统: 1.大规模:用户数量多.数据规模大.功能众多 2.性能和安全要求高 3.业务复杂 4.灵活应变 Java技术:高入侵式依赖EJB技术框架-->Spring框 ...
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
1.Spring中的数据库支持 把具有相同功能的代码模板抽取到一个工具类中.2.关于jdbc template的应用 jdbcTemplate模板操作类,把访问jdbc的模板抽取到template中, ...
- [Spring学习笔记 1 ] Spring 简介,初步知识--Ioc容器详解 基本原理。
一.Spring Ioc容器详解(1) 20131105 1.一切都是Bean Bean可是一个字符串或者是数字,一般是一些业务组件. 粒度一般比较粗. 2.Bean的名称 xml配置文件中,id属性 ...
- Spring学习笔记之五----Spring MVC
Spring MVC通常的执行流程是:当一个Web请求被发送给Spring MVC Application,Dispatcher Servlet接收到这个请求,通过HandlerMapping找到Co ...
- Spring学习笔记之 Spring IOC容器(二) 之注入参数值,自动组件扫描方式,控制Bean实例化方式,使用注解方式
本节主要内容: 1. 给MessageBean注入参数值 2. 测试Spring自动组件扫描方式 3. 如何控制ExampleBean实例化方式 4. 使用注解方式重构Jdb ...
- Spring学习笔记之 Spring IOC容器(一)之 实例化容器,创建JavaBean对象,控制Bean实例化,setter方式注入,依赖属性的注入,自动装配功能实现自动属性注入
本节主要内容: 1.实例化Spring容器示例 2.利用Spring容器创建JavaBean对象 3.如何控制Bean实例化 4.利用Spring实现bean属性sett ...
随机推荐
- 使用olami sdk实现一个语音查询股票的iOS程序
前言 在目前的软件应用中,输入方式还是以文字输入方式为主,但是语音输入的方式目前应用的越来越广泛.在这里介绍一个使用 Olami SDK 编写的一个使用语音输入查询股票的APP Olami SDK的介 ...
- 前端页面卡顿、也许是DOM操作惹的祸?
界面上UI的更改都是通过DOM操作实现的,并不是通过传统的刷新页面实现 的.尽管DOM提供了丰富接口供外部调用,但DOM操作的代价很高,页面前端代码的性能瓶颈也大多集中在DOM操作上,所以前端性能优化 ...
- 如何用IDEA一步一步开发WebService服务器端
工具:IntelliJ IDEA 15.0.4 IDEA这款IDE还是非常强大的,对WebService也有很好的支持.下面我们来一步一步的实现WebService服务器端: 第一步,新建一个工程:F ...
- 用javascript和html5做一个音乐播放器,附带源码
效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 输入搜索关键词,点击放大镜图标 7.侧边栏 目录结构 开发心得与总结 1.轮播图 首先感谢作者S ...
- C# TextBlock 上标
我需要做一个函数,显示 ,但是看起来用 TextBlock 做的不好看. 我用 WPF 写的上标看起来不好看,但是最后有了一个简单方法让他好看. 本文告诉大家如何做一个好看的上标. 一开始做的方法: ...
- [问题记录]父元素position:relative的深坑
个人博客迁移至:https://blog.plcent.com/欢迎大家访问 今天在写全屏切换的时候,发现一个问题就是切换时只能滚动第一屏,其他屏死都不动, 全屏滚动的原理: 是每次滚动父元素向上滚动 ...
- C# WinForm DataGridView让DataPropertyName支持复杂属性
首先给Grid添加BindingSource,类型为BindingForForm2.或者设置Grid的DataSource为IEnumerable<BindingForForm2>. Bi ...
- LINUX 笔记-date命令
显示当前时间: 命令: focus@ubuntu:~$ date Thu Aug 31 03:01:17 PDT 2017 focus@ubuntu:~$ date '+%x' 08/31/2017 ...
- 排序算法总结(C++版)
总结下学过的排序算法,方便以后用到. 1.插入排序——将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表. void insertSort(int a[],int len) { ; ...
- C++ 标准库之iomanip
C++ 标准库之iomanip istream & istream::get(char *, int, char = '\n');istream & istream::getline( ...