码迷,mamicode.com
首页 > 编程语言 > 详细

spring DAY01

时间:2015-08-13 07:44:11      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:

DAY01

Spring的作用与优势

Spring用来整合软件开发中的各种框架,提供组件之间松耦合的平台,目的是将耦合度降为最低,即解耦.我们在使用spring框架时,主要使用spring的两个特性:Iocaop.

Spring是一个开源框架.

Springjavaee应用提供了一个轻量级的解决方案.

Spring提倡”最少侵入”.

Spring是一个优秀的mvc框架.

基于依赖注入的核心机制,基于aop的声明式事务管理.

 

Spring核心模块

Dao,orm,jee,web,aop,core

 

Spring 容器实例化:

Spring通过beanFactory管理和配置bean,spring,任何的java对象,java组件都被当成bean处理.

BeanFactory创建并负责管理spring bean的上下文的生命周期.并建立对象之间的依赖性.

org.springframework.beans.facotry.xmlXmlBeanFactorybeanFactory的实现类,XMLBeanFactory,xml结构方式描述对象及对象之间的依赖关系.

创建BeanFactory实例时,必须提供spring容器管理bean的详细配置信息,相应的xml文件作为参数传入.

Spring容器实例化的方式:

BeanFactory

XMLBeanFactory-->Resource-->ClassPathResource\FileSystemResource

ApplicationContext

ClassPathXmlApplicationContext(推荐)

FileSystemXmlApplicationContext

 

Bean对象创建的时机

默认是随着容器创建,可以使用lazy-init=true(在调用getBean创建)延迟加载.

Bean对象创建模式

默认是单例,可以使用scope属性改变.

Singleton:单例,每次调用getBean返回同一个.

Prototype:原型,每次调用getBean返回一个新的.

Request:仅限于web环境

Session:仅限于web环境

Global session:仅限于web环境.

 

Bean对象想初始化和销毁

Init-method属性用于指定初始化方法

Destroy-method属性用于指定销毁方法,仅适用于singleton模式.

 

DI依赖注入

Di(dependency injection依赖注入)IOC实现的重要技术,有两种方式:

Setter方式注入

构造方式注入

 

IOCdi的关系

IOC全称inverse ofcontrol(反向控制或控制翻转)

Spring是具有IOC特性的框架

实现IOC是由spring容器来完成的,spring容器通过di建立起对象(组件,bean)之间的关系.

可以这样理解:diIOC实现的一种手段,IOC的理论通过di来实现.

 

经典案例:

实例化dao类的对象在配置文件中进行配置.

Spring 通过BeanFactory管理和配置bean,spring,任何的java对象,java组件都被当成bean处理.

BeanFactory创建并负责管理spring bean的上下文的生命周期.并建立对象之间的依赖性,方式来描述对象之间的依赖关系.创建BeanFactory实例时,必须提供spring容器管理bean的详细配置信息,相应的xml文件作为参数传入.

 

Spring容器对bean组件的管理

Bean对象的创建时机,bean对象的创建模式以及bean对象的初始化和销毁.

<bean id=”feeDao” class=”tarena.dao.JdbcFeeDAO” lazy-init=”true” />

 

Bean对象的创建模式:

默认情况下,通过调用ac.getBean(“feeDAO”)方法获得的对象都是同一个对象.

使用单例模式有风险,风险在于多线程并发访问时会有一些状况.

 

DI注入

Setter方式注入

采用setter方式注入dao,spring在创建完service对象后,自动执行.

Private FeeDAO feeDao;

Public void setFeeDao(FeeDAO feeDao){

this.feeDao=feeDao;

}

<bean id=”feeService” scope=”prototype” class=”tarena.service.FeeServiceImpl”>

<!--定义DI依赖注入关系-->

<property name=”feeDao” ref=”feeDAO1” />

</bean>

<bean id=”feeDAO1” scope=”prototype” class=”tarena.dao.HibernaterFeeDAO” />

 

构造方式注入:

//采用构造方式注入dao

Spring在创建完service对象后,自动执行

Private FeeDAO feeDao;

Public FeeServiceImpl(FeeDAO feeDao){

this.feeDao=feeDao;

}

 

<bean id=”feeService” scope=”prototype” class=”tarena.service.FeeServiceImpl”>

<!--定义DI依赖注入关系-->

<constructor-arg index=”0” ref=”feeDAO1” />

</bean>

<bean id=”feeDAO1” scope=”prototype” class=”tarena.dao.HibernaterFeeDAO” />

 

构造方式注入,结构简单,但是不容易分辨注入参数的含义,set方式注入的话,但易分辨注入参数的含义,可读性好.在研发过程中,setter方式使用的较为多些.

 

spring DAY01

标签:

原文地址:http://www.cnblogs.com/jisngjun/p/4726048.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!