[6-01]springioc

来源:互联网 发布:pc安装mac os x系统 编辑:程序博客网 时间:2024/06/10 21:57

一,spring好处(为什么要用spring)

1.方便解偶,简化开发

spring就是一个大工厂,可以将所有对象的创建和依赖关系维护,交给spring管理

2.AOP编程的支持

spring提供面向切面编程,可以方便的实现对程序进行拦截,实现权限拦截,性能监测等功能

3.声明式事务的支持

只需要通过配置就可以完成对事务的支持,无需手动编程

4.方便程序测试

spring对junit4支持,可以方便通过注解测试spring程序

5.方便集成各种优秀框架

spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的支持(mybaits,quartz,mq等)

6.降低javaee api的使用难度

spring对javaee开发中非常难用api(jdbc,javamail,远程调用)提供了封装,使这些api应用难度大大降低


二,spring应用

1.核心技术ioc和aop

2.数据访问

3.表现层

4.集成(整合其他技术)


三,基本概念

1.ioc(控制反转):将程序中对象的创建权,交给spring工厂来管理。

原理:工厂,配置文件,反射

根据配置文件获取容器上下文,applicationContext,根据applicationContext.getbean获取具体对象

2.spring工厂超级接口 BeanFactory

BeanFactory采用延迟加载,第一次getBean时才会初始化Bean

ApplicationContext是对BeanFactory拓展,提供了很多功能:

国际化处理,事件传递,Bean自动装配,各种不同应用层的Context实现

3.BeanFactory和FactoryBean的区别

BeanFactory是管理对象的工厂,FactoryBean是工厂模式创建的一个对象


四,spring实例化bean三种方式

1.默认无参构造器

<bean id="" class=""/>当application读到class这里,工厂中的对象就会实例化


2.静态工厂方法 实例化

public class Bean2Factory{

public static bean2 initBean2(){

return new bean2();

}

}

常用serveletActionContext.getRequest()

<bean id="" class="" factory-method="">


3.实例工厂方法

public class Bean3Factory{

public Bean3 createBean3(){

return new Bean3();

}

}

例如:sessionFactory的openSession(); request的getSession();

<bean id="bean3Factory" class="">

<bean id="bean3" factory-bean="bean3Factory" factory-method="createBean3">

第三种方式简化:

spring规范提供FactoryBean接口

 public class MyFactoryBean implements FactoryBean<Bean3>{

@override

public Bean3 getObject() throws Exception{

return new Bean3();

}

}

<bean id = "bean3" class="...MyFactoryBean" />


五,Bean的作用域

1.singleton单例 springioc仅存在一个bean实例,Bean以单例形式存在

2.prototype多例  每次从容器获取bean实例,都是new出来的新实例

默认单例


六,Bean的生命周期

1.bean的初始化和销毁

构造 初始化 销毁

在配置<Bean> 通过init-method属性和destory-method属性指定两个方法

destory必须在工厂调用close方法时,才会执行,默认不会执行


七,BeanPostProcessoor 

在bean初始化前后,对目标对象增强钩子程序,分后处理器和前处理器两种,初始化前后;

实现需要注册到spring工厂中


八,依赖注入属性配置

构造器注入,setting注入,

接口注入,配置不支持,但是spring内部提供很多符合接口注入api(ApplicationContextAware)

p名称空间简化setting注入

spring3.0之后,增强spring配置,提供spring expression language语言(spEL)

可以直接注入对象,调用对象属性或方法


集合类型属性注入:

数组或list-----<List>或者<array>

set --<set>注入

map ------<map><enter>注入

properties--------<props><prop>注入


九,springioc初始化

org.springframework.web.context.ContextLoaderListener

随着tomcat启动初始化;

(ApplicationContext)this.getServletContext(); 获取


十,spring和junit集成测试

 使用 @RunWith注解 和 @ContextConfiguration 注解集成测试

初始化 spring容器