一、什么是spring?

Spring是一个开源的控制反转(Inversion of Control  ,IoC)和面向切面(AOP)的容器框架。实现一个全方位的整合框架,在Spring框架下实现多个子框架的组合。它的主要目得是简化企业开发

二、使用spring的好处

降低组件之间的耦合度,实现软件各层之间的解耦。
可以使用容器提供的众多服务,如:事务管理服务
容器提供单例模式支持,开发人员不再需要自己编写实现代码。
容器提供了AOP技术,利用它很容易实现如权限拦截、运行期监控等功能。
容器提供的众多辅作类,如JdbcTemplate、HibernateTemplate。
Spring对于主流的应用框架提供了集成支持,如:集成Hibernate、JPA、Struts、mybatis等,这样更便于应用的开发。

三、使用spring必须的jar文件及配置applicationContext.xml



注:如果想把Javabean交由spring容器管理,只需在配置文件中配置<bean class="com.zhidisoft.dao.UserDao">

四、IOC和DI

IOC、Inversion of Control  控制反转

所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的


DI、Dependency Injection  依赖注入

具体含义是:当某个组件(可能是一个Java实例,调用者)需要另一个组件(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者 实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。


IOC和DI其实是同个概念不同角度的叙述


五、依赖注入方式

依赖注入的方式有三种方式:
构造方法注入
set方法注入(也称为属性注入)
接口注入

Spring支持以下注入方式:
构造方法注入
set方法注入(也称为属性注入)

1、构造方法注入

基于构造器的DI通过调用带参数的构造器来实现,每个参数代表着一个依赖关系


2、set方法注入

调用了无参的构造方法创建对象之后,可以通过它的setter方法完成对依赖对象的注入



六、bean的作用域

Spring2.5之前Bean的作用域只有两种
Singleton:单例Bean
Prototype:原型Bean

Spring2.5之后Bean的作用域有以下五种:


singleton
<bean id="" class="" scope="singleton">
指定scope=“singleton”的bean为单例bean,也即容器运行期间,只为该class创建一个实例,并且所有对bean的请求,只要name与该bean定义相匹配,则只会返回bean的同一实例。


prototype
<bean id="" class="" scope="prototype">
prototype作用域的bean会导致在每次对该bean请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)时都会创建一个新的bean实例。


七、bean生命周期方法

可以Spring中指定Bean的初始化方法,当该JavaBean实例化完毕后调用该方法对JavaBean做初始化操作
同时也可以在Spring中指定Bean的销毁方法,Spring销毁该JavaBean实例之前进行的一些销毁前的资源释放操作。





八、属性装配

普通属性的装配

Bean的普通属性,如数据类型为基本数据类型或者String的属性,Spring通过属性编辑器(PropertyEditor)进行自动的类型转换


集合属性的装配




九、bean延迟实例化

ApplicationContext实现的默认行为就是在启动时将所有单例bean提前进行实例化。
提前实例化意味着作为Bean的实例化工作作为容器初始化过程的一部分,ApplicationContext容器会创建并配置所有的单例bean。
通常情况下这是件好事,因为这样在配置中的任何错误就会即刻被发现(否则的话可能要花几个小时甚至几天)。
如果开发者不想让一个单例bean在ApplicationContext初始化时被提前实例化,那么可以将bean设置为延迟实例化。






  


Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐