什么是Spring(3.2) 之父 Rod Johnson
Spring 是分层的JavaSe/EE full-stack轻量级开源框架
Spring内核
IOC (Inverse of Control 反转控制 依赖注入) ------就是创建对象的控制权被交给Spring(反转到了Spring框架)
AOP (Aspect Oriented Programming 面向切面编程)
Spring的出现是为了取代EJB的臃肿、低效、脱离现实
Spring好处
1 方便解耦 简化开发
Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
2 AOp编程的支持
Spring 提供面向切面编程 可以方便的实现对程序进行权限拦截器 运行监控等功能
3 声明事务的支持
只需要通过配置就可以完成对事物的管理 无需手动编程
4 方便编程的测试
Spring对Junit4支持 可以统一注解方
5 方便集成各种优秀框架
Spring 不排次各种优秀的框架 内部提供了对各种框架的支持
6 降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC javaMail 远程调用) 都提供了风转 使这些API应用难度降低
ApplicationContext 应用上下文,加载Spring 框架配置文件
加载classpath:
new ClassPathXmlApplicationContext("applicationContext.xml");
加载磁盘路径:
new FileSystemXmlApplicationContext("applicationContext.xml");
Spring容器BEan的声明周期
Spring初始化bean或销毁bean是 有时需要做一些处理工作 因此在创建 和拆卸bean时调用bean的两个声明周期方法
<bean id=“foo” class=“...Foo”init-method=“setup” ------------bean被载入容器的时候调用
destory-method=“teardown”/>-----------bean从容器中删除的时候调用 web中自动调用 main中 测试中 需要手动调用
1 instantiate bean 对象实例化
2 prpulate properties 封装属性
3 如果Bean 实现 BeanNameAware 执行setBeanName
4 如果Bean实现BeanFactoryAware 或者 ApplicationContextAware 设置工厂
setBeanFactory 或者上下文对象setApplicationContext
5 如果存在类实现BeanPostProcessor(后处理Bean),执行postProcessBeforeInitialization
6 如果Bean实现InitializingBean 执行 afterPropertiesSet
7 调用<Bean init-metod="init"> 指定初始化方法init
8 如果存在类实现BeanPostProcessor(处理Bean) 执行 postProcessAfterlinitalization
9 执行业务处理
10 如果Bean实现DisposableBean 执行destroy
11 调用<beandestory-method="customerDestory">执行销毁方法 customerDestory