spring框架

来源:互联网 发布:梅家坞龙井茶知乎 编辑:程序博客网 时间:2024/06/09 20:16

spring的特点

ioc 控制反转:把创建和维护对象(bean)的控制权从程序中转移到了spring容器(applicationcontext.xml)中,可以重复利用和统一操作

di 依赖注入:对象依赖和属性值注入,与ioc表述的是同一概念。


获取bean的方法

获取bean的两种方法:applicationcontext和beanfactory

使用applicationcontext,配置的bean是singlton。则实例化bean容器时,文件中配置的bean被实例化。速度快,占内存。一般情况都使用。

beanfactory实例化bean容器时,文件中配置的bean不被实例化,使用getbean时才实例化。速度慢,不占内存。


bean作用域控制

singlton 单例模式,一个bean只有一个对象实例

prototype 一个bean可以有多个对象

request web项目中,每次http请求都会产生自己的实例

session 一次会话中,一个bean对应一个实例

global session 


程序中调用beans.xml实现



bean的生命周期


①     实例化(当我们的程序加载beans.xml文件),把我们的bean(前提是scope=singleton)实例化到内存

②     调用set方法设置属性

③     如果你实现了bean名字关注接口(BeanNameAware)则,可以通过setBeanName获取id号

④     如果你实现了 bean工厂关注接口,(BeanFactoryAware),则可以获取BeanFactory

⑤     如果你实现了ApplicationContextAware接口,则调用方法

//该方法传递ApplicationContext      public void setApplicationContext(ApplicationContext arg0)                     throws BeansException {              // TODO Auto-generated methodstub             System.out.println("setApplicationContext"+arg0);      }


⑥     如果bean 和 一个后置处理器关联,则会自动去调用Object postProcessBeforeInitialization方法

⑦     如果你实现InitializingBean接口,则会调用 afterPropertiesSet

⑧     如果自己在<beaninit-method=”init” /> 则可以在bean定义自己的初始化方法.

⑨     如果bean 和 一个后置处理器关联,则会自动去调用Object postProcessAfterInitialization方法

⑩     使用我们的bean

小结: 我们实际开发中往往,没有用的这么的过程,常见的是:

1->2->6->10->9->11


配置bean

1.Scope尽量使用singlton,prototype能不使用就不使用,因为影响性能。

2.给集合注入值

3.内部bean

4.set装配

5.自动装配autowire=" "

①byName自动寻找对象名

②byType自动按类型匹配

③constructor寻找构造函数进行匹配

④outodetect

⑤default

⑥no不自动装配

6.启用注解<context:annotation-config />

7.分散配置到.properties文件中<context:property-placeholder  />引入

AOP面向切面编程

面向N多对象。把对象们里的相同功能摘出来放到一个功能块里面。
0 0