Sping入门

极客学院的视频超好.

1.spring框架的作用:降低企业应用开发复杂性

传统开发模式:

spring的开发模式:



 

2.spring降低程序复杂性的方法:降低类之间的耦合性

ioc容器就像一个中介一样,ioc统一创建类的实例化对象,需要用到的时候,直接向ioc调用即可.

3.spring是一个轻量级控制反转(ioc)和面向切面(aop)的容器框架


4.ioc是spring的核心,ioc对于spring来说,就是由spring来负责控制对象生命周期和对象间的关系

传统开发模式:对象之间互相依赖,比如你在开发一个界面,你需要用到文本框对象,那么你需要new一个文本框对象,或者从jndi中查询一个,使用完对象后还要销毁

进入ioc模式之后,对象之间的依赖关系由ioc来管理,ioc实现的原理有点像中介,你只需要告诉ioc我需要一个什么样的对象,那么ioc就给你一个什么样的对象,如果给的对象不符合要求,那么就抛异常

以前是被调用的对象由调用对象来控制它的生命周期,现在所有对象都由ioc来控制,这就叫控制反转

依赖注入和控制反转是从不同角度描述同一件事情,依赖注入就是在类的运行期间,将类需要的某种依赖关系动态的注入到类中

依赖注入这种原理,不仅仅可以用在软件行业,也可以用在日常生活中


5.aop
aop的基本概念: 面向切面的编程,新颖的设计思想
aop与oop的关系:aop是对oop面向编程的一种补充,oop是从静态角度考虑程序  aop是从动态角度考虑程序运行过程
aop主要功能:主要是系统级别的功能,比如日志处理,异常处理,事务处理
aop主要意图:将日志,事务,安全控制,支持等东西与具体的业务逻辑分离出来

举例: 一个大型的应用系统,很多模块,
      每个模块都负责一个核心业务,每个模块又都需要日志组件,异常管理组件的支持。而且业务模块插入了与业务自身无关的组件,很麻烦,因此aop目的是将这些需要公用的组件分离出去
  
实现原理:aop代理目标对象的全部方法,然后对其增强. 一般业务组件只要找好切入点,然后调用aop代理就行了

6.注入方法有3种
构造函数注入
属性注入
接口注入

7.spring通过xml配置文件,来描述类与类之间的依赖关系,然后自动完成类的初始化和销毁

  spring的ioc原理就是利用反射机制实现的
 
8.JDK并不能很好的访问底层资源,所以spring设计了一个Resource接口,它为应用提供了更强大的访问底层资源的能力

9.BeanFactory是spring框架最核心的接口,它提供高级ioc的配置机制,ApplicationContext建立在BeanFactory基础之上,提供了更多面向应用的功能,它提供了国际化支持和框架事件体系

10.spring配置文件就是指导spring工厂进行bean的生产,依赖关系注入以及bean实例分发的"图纸",它是一个或者多个的xml文档

11.启动spring基本条件
  11.1spring的框架包
  11.2bean的配置信息
  11.3bean的实现类
 
 
12.spring理解了,就是spring 里面有个beanFactory(专门用来创建类的实例,然后放到bean缓存池里面),创建了类之后,程序需要的话就向bean缓存池要

比如要用Hello这个类,就用BeanFactory beanFactory=new ClassPathXmlApplicationContext("xxxx")
                      Hello  a=beanFactory.getBean("xxx")  (不同配置,有不同获取方法)
      
13.bean id的命名方式  作用:你要从beanFactory中注入要用到的类,那么你必须有一个东西唯一标识它,不然你怎么找到它呢?
  所以配置文件就是干的这个工作,用一个东西唯一标识它
 
14.spring如何实例化bean?(简单) (意思就是你如何让spring 帮你产生类的实例化对象
   利用反射机制实例化bean
  
   构造器实例化bean是最简单的方式
   静态工厂
   实例工厂
  
   3种方式配置不一样,但是使用他们的方法是一样的
 
15.scope
在面向对象的编程中指变量的作用范围,在spring中指的是一个bean对象对其他bean对象的请求可见范围

bean的5种预定义作用域,以及如何在spring中自定义作用域

singleton:请求都只会返回唯一的bean,传统的模式,要为每一个单独实例编写代码,spring以容器的功能直接提供单实例,很方便
           应用:应为spring有面向切向的特点,所以DAO这些类都可以做成单实例模式
    
     spring因为localThread和面向切向,使得非线程安全的类可以变成线程安全的类
    
     spring默认作用域是singleton,因为spring的强大功能,好多类都可以做成线程安全的类,所以大部分作用域都是singleton

prototype:每次请求都创建一个新的bean对象,所以spring初始化是不会实例化prototype这种bean的

request跟http请求对应,http中的request没了,作用域为request的bean也会被销毁
session 跟http请求对应,http中的session没了,作用域为session的bean也会被销毁

16.spring 配置文件的管理

在大型项目中,spring的配置文件都是分开管理的,然后再通过一个xml文件整合所有的其他xml配置文件

举例
Spring-All-Module.xml
<beans>
<import  resource="common/Spring-Common">
<import  resource=...>
<import  resource=...>

<beans>

整合后的加载方式
Application context=new ClassPathXmlApplicationContext("Spring-All-Module.xml");
 

17.用通俗的话来说spring的一般原理如下:

     17.1先在xml中配置好需要用到的类

     17.2启动spring,spring在beanFactory中创建类的对象,相当于我们new 了一个对象

     17.3要用到对象的时候就向beanFactory要,步骤如下

          先new一个BeanFactory

BeanFactory beanFactory = new ClassPathXmlApplicationContext("conf/conf-scope.xml");

        然后我要Boss类的一个对象,直接向beanFactory要

Boss boss1 = beanFactory.getBean("boss1", Boss.class);

猜你喜欢

转载自542255641.iteye.com/blog/2237933