spring框架详解

把之前分享的spring框架整理一份放在这里。

整体架构:

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架

框架图(选自:http://docs.spring.io/spring/docs/3.0.x/reference/overview.html):

core Container为spring的核心,实现了基于IoC的bean管理容器。上层的aop /Aspects都是基于他基础上实现的AOP。他们构成了spring的核心功能。

在IoC和AOP基础上,我们有扩展了数据层和web层

使用场景:

web应用使用场景:(springmvc + spring)

rpc应用使用场景:

IoC定义:

应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。

IoC容器框架的类关系:

beanFactory 和 applicationContext的比较,applicationContext支持的功能更多:

applicationContext支持不同的信息源:ApplicationContext扩展了MessageSource接口,可以支持国际化的实现。

访问资源:ApplicationContext继承了DefaultResourceLoader的子类,提供ResourceLoader和Resource的支持

支持应用事件:ApplicationContext继承了ApplicationEventPublisher接口

applicationContext启动流程(AbstractApplicationContext):

ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

// Invoke factory processors registered as beans in the context.
invokeBeanFactoryPostProcessors(beanFactory);

// Register bean processors that intercept bean creation.
registerBeanPostProcessors(beanFactory);

// Instantiate all remaining (non-lazy-init) singletons.
finishBeanFactoryInitialization(beanFactory);

  

bean介绍:

按照注入bean的种类分类:

分为 普通bean和 FactoryBean

factoryBean 需要实现FactoryBean接口,应用于一个bean作为工厂方法产生不同的bean实例,常用于应用层框架的搭建,可以根据特定条件返回接口的不同实现

public interface FactoryBean<T> {

    T getObject() throws Exception;
        Class<?> getObjectType();
    boolean isSingleton();

}

bean的资源定义如何载入到容器:

xmlBeanFactory:

applicationContext

编程式获取bean的方法

Web应用程序bean实例化的配置

bean的注册:

如何自定义bean标签

BeanFactoryPostProcessor

获取bean的流程:

bean的生命周期

生命周期中的扩展

spring在web中如何启动

bean的注解

注解实现举例

问题互动:

Bean 的循环依赖会报错吗

如何扩展一个bean的定义标签

Web applicationContext什么时候实例化 bean

AOP定义

面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。

应用模式

实现原理

webx介绍

时间: 2024-07-31 19:05:36

spring框架详解的相关文章

【59】Quartz+Spring框架详解

什么是Quartz Quartz是一个作业调度系统(a job scheduling system),Quartz不但可以集成到其他的软件系统中,而且也可以独立运行的:在本文中"job scheduler"的意思是:一个负责在约定的时间到达时执行(或通知)其他软件控件的方法. Quartz是非常灵活的,为了实现我们的需求Quartz包含了许多可以独立或被集成使用的典型范例,同时使我们编写项目中的代码也觉得很简单自然(natural). Quartz是很轻量级的,只需要简单的安装或配置就

Spring+Struts+Hibernate框架详解

1.Spring (1)导入Spring核心包 (2)导入struts核心包 (3)导入hibernate核心包 (4)将struts和spring整合还需导入 (5)struts配置文件详解 (6)spring配置文件详解 (7)hibernate配置文件详解 (8)数据库数据配置文件jdbc.properties (9)SSH搭建常报错误解析 1.)mysql和oracle实体类映射文件的配置 2.)报sessionFactory找不到 解决方案:仔细查看实体类映射文件 3.)数据库增删查改

Spring JDBC详解

<Spring JDBC详解> 本文旨在讲述Spring JDBC模块的用法.Spring JDBC模块是Spring框架的基础模块之一. 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.概述 在Spring JDBC模块中,所有的类可以被分到四个单独的包:1)core即核心包,它包含了JDBC的核心功能.此包内有很多重要的类,包括:JdbcTemplate类.SimpleJdbcInsert类,SimpleJdbcCall类,以及NamedP

(转) shiro权限框架详解06-shiro与web项目整合(上)

http://blog.csdn.net/facekbook/article/details/54947730 shiro和web项目整合,实现类似真实项目的应用 本文中使用的项目架构是springMVC+mybatis,所以我们是基于搭建好的项目进行改造的. 将shiro整合到web应用中 登录 退出 认证信息在页面展现,也就是显示菜单 shiro的过滤器 将shiro整合到web应用中 数据库脚步 sql脚步放到项目中,项目上传到共享的资源中,文章最后给出共享url. 去除项目中不使用shi

eclipse Indigo搭建SSH框架详解

SSH框架是最常用的框架之一,在搭建SSH框架的时候总有人遇到这样,那样的问题.下面我介绍一下SSH框架搭建的全过程. 第一步:准备工作.   下载好eclipse,Struts2,Spring,Hibernate.   1.eclipse:eclipse下载的时候建议下载JavaEE版的eclipse.                 当然你也可以下载eclipse-SDK.(下载eclipse-SDK需要下载Web,Tomcat等plugins)   2.Struts2:http://str

Spring WebSocket详解

Spring WebSocket详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Spring框架从4.0版开始支持WebSocket,下面我将详述Spring WebSocket库的相关内容.内容包括Spring框架是如何在Web应用中支持WebSocket方式的消息通信,以及如何利用STOMP协议作为应用层的协议--WebSocket的子协议. 1.WebSocket协议介绍 WebSocket协议是RFC-6455规范定义的一个Web领域的

Spring配置文件详解 – applicationContext.xml文件路径

Spring配置文件详解 – applicationContext.xml文件路径 Java编程 spring的配置文件applicationContext.xml的默认地址在WEB-INF下,只要在web.xml中加入代码 1 2 3 4 5 <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener&

Spring AOP详解(转载)

此前对于AOP的使用仅限于声明式事务,除此之外在实际开发中也没有遇到过与之相关的问题.最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP 来解决.一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容.本文是权当本人的自己AOP学习笔记,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智. 对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用情况 监控部分重要函数,若抛出指定的异常,需要以短信或邮件方式通知相关人员

MTK平台LCD驱动框架详解(一)

许多学习嵌入式的进入MTK开发平台,很多东西都会感到很陌生.在MTK平台上你可以简简单单几分钟就点亮一块屏.加上MTK快速开发的节奏,也很少有时间自己整理学习.如果不思进取,不加班加点学习.很容易就慢慢--.这也难怪有些人说MTK造就了一批懒人,毁掉了一批工程师.但其实都是基于linux开发,核心的东西都是一样一样的.我刚入行业,在迷茫之际,自己整理跟踪源码.想慢慢找回自己熟悉的感觉,掌握MTK的整体框架.也希望能给有需要的人带来些帮助.好吧!前话说到这,开始正题. 本文肯定有不少地方会出现错误