spring浅析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring浅析相关的知识,希望对你有一定的参考价值。
一、什么是spring?
spring是一个基于Java的应用平台,是一个开源的框架,他同EJB一样都是为了为松耦合的POJO类提供中间服务件,框架将服务注入给POJO类,POJO类无需关注如何去连接服务,从而达到将应用开发与复杂的J2EE服务解耦开来,从而简化J2EE的开发,而对于这些功能的具体实现,就要涉及到spring的核心模块IOC,AOP。
二、什么是IOC容器
IOC叫控制反转(IOC)或称依赖注入(DI),两个名称其实说的是同一回事,只是侧重点各有不同,控制反转侧重于,对象的实例化过程不需要硬编码在Java代码中而是交给spring容器。依赖注入侧重于spring容器给bean属性赋值,依赖注入的几种方式:
1.通过构造方法2.set()方法
IOC容器并非一个容器,它指的是一个容器系列,不同容器有不同的功能。我们最常见的容器例如BeanFactory,ApplicationContext,后者扩展了前者的很多功能,例如添加了国际化,生命周期事件的发布监听等,大多数开发都是用的是后者,只有在内存有限制时可能会使用
前者。因此我们启动spring可以有两种方式:
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
那么spring又是如何通过IOC容器对bean进行管理的呢?下面简单介绍下流程
通过观察sping类结构图,我们会看到一个容器最底层的实现XmlBeanFactory,它可以读取以xml形式定义的BeanDefinition,那么
BeanDefinition又是干什么的呢?他是用来存储需要实例化的类的所有信息的,它的信息存储的时间是Resource类读取配置文件的位置时,
通过调用loadBeanDefinitions将信息家载入BeanDefinition实例化之后便会将配置文件配置的类的信息存储到BeanDefinition中,
那么当我们需要实例化一个类时,通过XmlBeanFactory通过在构造器里传入一个Resource读取BeanDefinition中的类的信息,就可以将这个类实例化,
供我们使用了。因此容器的初始化包括BeanDefinition的Resouce定位、载入和注册这三个基本的过程
三、什么是AOP?
AOP简而言之,面向切面编程。AOP的用处:
1.用来做日记的处理
2.方法的调用统计
3.业务层面的读写分离(例如自定义的Annotation+AOP可以实现切换数据源)
4.自定义权限拦截器
在spring框架中,AOP则发挥了不少功效,例如spring的事务,这应该是AOP在spring框架中的最好体现了吧.
在这个AOP实现中,Spring充分利用了IOC容器Proxy代理对象以及AOP拦截器的功能特性,通过这些对AOP基本功能的封装机制,为用户提供了AOP的实现框架。所以,要了解这些AOP的基本实现,需要我们对Java 的Proxy机制有一些基本了解。
本文出自 “12212886” 博客,谢绝转载!
以上是关于spring浅析的主要内容,如果未能解决你的问题,请参考以下文章