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 ...
随机推荐
- python 解析xml
在工作中很多时候都要用到xml,使用这个时候难免会设计到解析他,然后就研究了一下python解析xml问题,看了很多东西,python有很多解析xml的包,但是也折腾我好一段时间,最后选择了这个方法. ...
- linux 远程操作(expect)
Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管 理方面发挥很大的作用. spawn命令激活一个Unix程序来 ...
- win10 uwp 兴趣线
本文讲的是如何去做一个时间轴样子的东西但我们放的不一定是时间,可能是我们的时间.我把它放在我的CSDN阅读,我的界面做出来很差,但是应该读者能做出很漂亮的. 行间距 我们在ViewModel写一个Ob ...
- javascript面向对象的写法及jQuery面向对象的写法
文章由来:jQuery源码学习时的总结 在JS中,一般的面向对象的写法如下: function Cao(){}//定义一个构造函数 Cao.prototype.init = function(){}/ ...
- mysql主从复制的异步复制与同步复制
异 步复制:MySQL本身支持单向的.异步的复制.异步复制意味着在把数据从一台机器拷贝到另一台机器时有一个延时 – 最重要的是这意味着当应用系统的事务提交已经确认时数据并不能在同一时刻拷贝/应用到从机 ...
- 下载MySQL历史版本
下载MySQL历史版本 地址:http://downloads.mysql.com/archives/community/
- 版本控制之一:SVN服务器搭建与安装(转)
Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http:// ...
- 【翻译】.Net Core的意义
想要了解.Net Core的意义,就必须要了解拥有很长历史的.Net Framework,.Net Framework1.0于2002年发布.从那开始,每隔两年就会有一个主版本推出.伴随着Visual ...
- C# group 子句
group 子句返回一个 IGrouping<TKey,TElement> 对象序列,这些对象包含零个或更多与该组的键值匹配的项. 例如,可以按照每个字符串中的第一个字母对字符串序列进行分 ...
- SpringBoot下配置FreeMarker配置远程模版
需求产生原因 要求在同一个接口中,根据不同的参数,返回不同的视图结果 所有的视图中的数据基本一致 要求页面能静态化,优化SEO 例如:A接口返回客户的信息 客户A在调用接口时,返回其个性化定制的页面A ...