Sping 模块中分析

Spring框架是一个java应用程序的开发提供了综合。广泛的基础支持java平台。

Spring框架集成了20多个模块,这些模块主要分为核心容器,数据访问/集成,WEB,AOP(面向切面编程),工具,消息和测试模块

Sping 模块中分析

核心模块:==================================================

Spring Core模块是spring的核心容器,它实现了IOC模式,提供了Spring基础功能,此模块中包含的BeanFactory类是spring的核心类,负责Bean的配置和管理,

它 采用Factory模式实现了IOC的依赖注入(依赖注入:注解,set,构造器等等)。

定义JavaBean是一种Java语言写成的可重用的组件,要编写JavaBean,类必须是具体类和公共类(实体类),并且有无参数的构造器

IOC:version Object Controller  控住反转

Sping 模块中分析

demo:

public interface Dao(){

}

public class DaoImpl impl Dao(){

public String getData(){

return "返回数据";

}

}

public void main

Dao dao = new DaoImpl();

把获取的数据过程给实现的代码,自己直接使用获取到的数据,繁琐的过程交给了第三方(交给了IOC容器)

Sping 模块中分析



Sping 模块中分析

Sping 模块中分析

javaBean和Bean的区别?

用处不同:

传统javabean更多的地作为值传递参数,而spring中的bean用处几乎随处可见,只要添加了注解在spring启动,在容器中就会有bean

写法不同:传统的javabean不接受任何容器管理器生命,spring中的bean有spring管理器生命周期

所用被spring实例化并管理的java类都是bean

bean的生命周期:

spring开启,spring容器中有了bean

在AppilcationContext中的Bean生命周期

Bean的生命周期

通过bean调用实现接口是为了先获取容器

1:需要所有的Bean根据bean定义的信息来实例化bean

2:使用依赖注入,spring按bean定义的信息配置bean的属性

3:若bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递bean的id

4:若bean实现BeanFactoryAware接口,工厂调用的setBeanFactory()方法,BeanFactory自身作为参数

5:若bean实现ApplicationContextAware接口,setApplicationContext().方法,bean作为参数

6:若BeanPostProcessor和bean关联

则他们的beanProcessAfterInitization()方法调用

7若bean指定了init-method="init"方法、,它将被调用。

8若有BeanPostProcessor和bean关联,

     则它们的postProcessAfterInitialization()方法被调用

    注意:通过已上操作,此时的Bean就可以被应用的系统使用,并讲保留在BeanFactory工厂中直到不再需要为止.但我们也可以通过9或者10进行销毁

9、若bean实现了DisposableBean接口,distroy()方法被调用

10、如果指定了destroy-method="close"定制的销毁方法,就调用这个方法

Spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。

    依赖注入的另一种说法是"控制反转"。通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员

控制反转IoC是Inversion of Control的缩写,是说对象的控制权进行转移,转移到第三方,比如转移交给了IoC容器,它就是一个创建工厂,你要什么对象,它就给你什么对象,有了IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系

依赖注入:

注解注入,set注入,构造器注入,静态工厂的注入,实例工厂的注入

Context模块:======================================

获取apring context模块的详细介绍

http://www.cnblogs.com/davidwang456/p/5717972.html

并且添加了事物的处理,国际化,资源装载,透明装载,

以及数据效验,它还提供了框架式的Bean的访问方式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、Email和定时任务调度等。

重点类:

ApplicationContext是核心接口,它为应用提供了环境配置,当应用在运行时ApplicationContext只能读,但可以在该接口中来实现reload功能

定义:

public interface ApplicationContext extends EnvironmentCapable,ListableBeanFactory,HierachicaBeanFactory,MessageSource,

ApplicationEvenPublisher,ResourcePatternResolver{

}

特点:

提供了一个bean工厂方法访问应用组件,通过继承org.springframework.beans.factory.ListableBeanFactory来获得的;

通过通用的资源文件加载文件资源的能力,通过继承org.springframework.core.io.ResourceLoader来获得的;

发布事件到注册的监听的能力,通过继承ApplicationEventPublisher来获得的;

解析消息,支持国际化的的能力,通过继承MessageSource来获得的;

context的继承机制。定义在子context将优先级别更高。这意味着,例如:一个父context可以被整个web应用共享,而每个servlet可以有自己的子context,并且这些servlet彼此独立。例如http://www.cnblogs.com/davidwang456/p/4122842.html

另外还有标准的org.springframework.beans.factory.BeanFactory的生命周期管理能力,ApplicationContext实现类发现和触发beanApplicationContextAware,还包括ResourceLoaderAware,ApplicationEventPublisherAware,MessageSourceAware bean。


 Web模块:================================

此模块是建立在Spring Context 基础之上,它提供了Servlet监听器监听context和web的上下文,对现有的web框架,如JSF、Tapestry、Structs等,提供了集成。Structs是建立在MVC 这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等。