1.理解什么是Spring框架?

 spring是J2EE应用程序框架,是轻量级的IOC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,Hibernate框架等组合使用。

2.Spring框架的优缺点:

  优点:

    轻量级的容器框架没有侵入性

    使用IoC容器更加容易组合对象直接间关系,面向接口编程,降低耦合

    Aop可以更加容易的进行功能扩展,遵循ocp开发原则

    创建对象默认是单例的,不需要再使用单例模式进行处理

  缺陷:业务功能依赖spring特有的功能,依赖与spring环境

3.Spring六大模块:

关键术语:  

  IOC (Inversion Of Control) 控制反转    IOC容器 = BeanFactory + bean.xml

  负责对象创建反转,在spring中BeanFacotory是IOC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。XmlBeanFacotory实现BeanFactory接口,通过获取xml配置文件数据,组成应用对象及对象间的依赖关系。

  DI   dependency  injection  依赖注入(处理对象的依赖关系!如:创建Action后需要处理Action依赖Service)

     spring中有三种注入方式,一种是set注入,一种是接口注入,另一种是构造方法注入。  

  Aop  aspect object program  面向切面编程!

      AOP就是纵向的编程,如业务1和业务2都需要一个共同的操作,与其往每个业务中都添加同样的代码,不如写一遍代码,让两个业务共同使用这段代码。

    spring中面向切面变成的实现有两种方式,一种是动态代理,一种是CGLIB,动态代理必须要提供接口,而CGLIB实现是有继承。

4.Spring开发步骤:

  1.下载Spring源码并引入Jar文件:(3.0之后,spring源码中只有spring的功能,如果spring有依赖其他包,需要单独下载)    

    commons-logging-1.1.3.jar 【需要单独下载, spring 依赖的日志包】
    spring-beans-3.2.5.RELEASE.jar 【3.2 源码:Spring bean节点支持】
    spring-context-3.2.5.RELEASE.jar 【3.2 源码:上下文支持】
    spring-core-3.2.5.RELEASE.jar 【3.2 源码:核心功能】
    spring-expression-3.2.5.RELEASE.jar 【3.2 源码:Spring 表达式】

  2.配置Application.xml/bean.xml (名字可以取其中一个)

    将需要创建的对象都在Spring容器中进行配置,对应的名称空间和约束可以去源码中拷贝!

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 创建一个User对象 -->
<bean id="user" class="cn.itcast.b_ioc.User"></bean>
</beans>

  3.创建IOC容器并通过IOC容器创建对象!

    1.通过无参或者有参构造函数创建对象;

    2.使用工厂类创建对象;

5.详解Spring创建Bean:

  <bean id="user"  class="cn.itcast.b_ioc_bean.User" scope="singleton" lazy-init="true" init-method="init" destroy-method="destroy"></bean>

5.1.通过scope指定bean是单例还是多例:

  scope="singleton"  单例, 启动时候创建所有单例的bean

  scope="prototype" 多例, 启动时候不会创建,【每次从容器获取实例时候,都会创建一个新的bean】

  当创建Dao/Service时候,可以指定singleton, 也可以不指定,默认就是单例!创建Action时候必须指定!

5.2. 延迟初始化
  lazy-init="false" 不延迟初始化
  lazy-init="true" 表示:在初始化容器时候,没有创建单例的bean;
  在第一次从容器中获取时候创建实例;如果再次获取,获取是上次创建的单例的对象
5.3. 初始化与销毁方法
  init-method=" "
  初始化方法, 创建完对象之后执行初始化方法; 如果是单例,执行一次; 多例就执行多次
  destroy-method=" "
  当调用ClassPathXmlApplicationContext对象的destroy方法的时候执行!

6.Bean的生命周期:

  6.1.先创建IOC容器对象
  6.2.每次从容器获取bean,才创建对象
  6.3.创建完对象后,执行初始化方法 (每次创建对象后执行)
  6.4.对象创建完毕
  6.5.容器销毁,执行destroy方法

SSH学习——Spring基础的更多相关文章

  1. [ SSH框架 ] Spring框架学习之一

    一.Spring概述 1.1 什么是Spring Spring是一个开源框架, Spring是于2003年兴起的一个轻量级的Java开发框架,由 Rod Johnson在其著作 Expert One- ...

  2. 第65节:Java后端的学习之Spring基础

    Java后端的学习之Spring基础 如果要学习spring,那么什么是框架,spring又是什么呢?学习spring中的ioc和bean,以及aop,IOC,Bean,AOP,(配置,注解,api) ...

  3. java学习之spring基础

    0x00前言 spring框架应用的是ioc模式,ioc模式是指控制反转模式,本质是你不去创建对象让spring框架给你创建对象你去使用对象.多种开发模式通过配置文件和注解的方式去开发的都很值得去学习 ...

  4. spring基础学习01

    spring基础 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用 IOC控制反转 把创建对象和维护对象之间的关系权利 ...

  5. Spring Boot学习第一部分(Spring 4.x)第一章(Spring 基础)

    1.spring概述 1.1.spring的简史 第一阶段:XML配置spring 1.x时代, 第二阶段:注解配置spring 2.x时代, @Controller @Service @Compon ...

  6. 【SSH学习笔记】浅谈SSH框架

    说在前面 本学期我们有一门课叫做Java EE,由陈老师所授,主要讲的就是Java EE 中的SSH框架. 由于陈老师授课风格以及自己的原因导致学了整整一学期不知道在讲什么,所以才有了自己重新学习总结 ...

  7. 学习Spring——依赖注入

    前言: 又开始动笔开了“学习Spring”系列的头…… 其实一开始写“学习SpringMVC”的几篇文章是出于想系统的了解下Spring以及SpringMVC,因为平时在公司中虽然每天都在使用Spri ...

  8. 最新版ssh hibernate spring struts2环境搭建

    最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...

  9. 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置

    在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...

随机推荐

  1. jQuery知识点:attr与prop的区别

    做项目时遇到个莫名的问题,全选的时候仅第一次有效,再次点击全选按钮是无效了,查了查原因,看到篇很不错的文章,问题出在jquery中的attr属性上,这里做下笔记. 原文链接:http://www.cn ...

  2. The 2017 ACM-ICPC Asia East Continent League Final记录

    首先感谢tyz学弟的麻麻-给我们弄到了名额- 然后就开始了ACM ECLFinal的玩耍,A*仙人掌可是立了flag要好好打的- 试机赛好像就全是GCJ kickstart的原题,然后AK了但是由于一 ...

  3. HDU2481 Toy

    Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission ...

  4. [POJ2954&POJ1265]皮克定理的应用两例

    皮克定理: 在一个多边形中.用I表示多边形内部的点数,E来表示多边形边上的点数,S表示多边形的面积. 满足:S:=I+E/2-1; 解决这一类题可能运用到的: 求E,一条边(x1,y1,x2,y2)上 ...

  5. Linux的yum命令——(八)

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  6. redis配置错误导致服务器不能启动

    redis-server忘了把配置里面的daemonize的no改成yes所以把redis-server加入到了/etc/rc.local里面,在服务器启动的时候就会阻塞在这里,导致服务器不能启动.[ ...

  7. 在Xcode6中搭建Python开发环境

    http://jingyan.baidu.com/article/f71d60379c73001ab741d14e.html 对于使用Mac电脑,刚入门Python的同学,一定很好奇是不是可以使用Xc ...

  8. spin_lock浅析【转】

    转自:http://blog.csdn.net/frankyzhangc/article/details/6569475 版权声明:本文为博主原创文章,未经博主允许不得转载. 今天我们详细了解一下sp ...

  9. Perl的Expect模块学习

    Perl的Expect模块学习 http://www.xuebuyuan.com/1852717.html

  10. Java反射——java.lang.Class 类简介

    Java的基本思想之一是万事万物即对象,类也是一种对象.但是类是什么对象呢?Java中的类是java.lang.Class的实例化对象,这被成为类类型. //java.lang.Class类中的的主要 ...