如果有人看的话,劳烦各位不吝指出不足之处,谢谢!
1.1 简化java开发
1.1.2 依赖注入(DI : Dependency Injection)
依赖注入使相互协作的软件组件保持松散耦合。
1.构造器注入(constructor injection)
在构造方法中请求输入一个接口类型的参数,从而使所有实现了这个接口的对象都可以被传入使用。
1.1.3 面向切面编程(AOP: aspect-oriented programming)
把遍布应用各处的功能分离出来形成可重用的组件。
1.1.4 使用模板消除样板代码
使用模板(如:JdbcTemplete)消除繁琐的样板代码(每次都是一个格式,如使用jdbc连接数据库的固定格式代码)。
1.2 容纳你的bean
1.2.1 使用应用上下文
AnnotationConfigApplicationContext :从一个或多个基于 Java 的配置类中加载 Spring 应用上下文。
AnnotationConfigWebApplicationContext :从一个或多个基于 Java 的配置类中加载 Spring Web 应用上下文。
ClassPathXmlApplicationContext :从类路径下的一个或多个 XML 配置文件中加载上下文定义,把应用上下文的定义文件作为类
资源。
FileSystemXmlapplicationcontext :从文件系统下的一个或多个 XML 配置文件中加载上下文定义。
XmlWebApplicationContext :从 Web 应用下的一个或多个 XML 配置文件中加载上下文定义。
1.2.2 Bean的生命周期
1 . Spring 对 bean 进行实例化;
2 . Spring 将值和 bean 的引用注入到 bean 对应的属性中;
3 .如果 bean 实现了 BeanNameAware 接口, Spring 将 bean 的 ID 传递给 setBean-Name() 方法;
4 .如果 bean 实现了 BeanFactoryAware 接口, Spring 将调用 setBeanFactory() 方法,将 BeanFactory 容器实例传入;
5 .如果 bean 实现了 ApplicationContextAware 接口, Spring 将调用 setApplicationContext() 方法,将 bean 所在的应用上下文的
引用传入进来;
6 .如果 bean 实现了 BeanPostProcessor 接口, Spring 将调用它们的 post-ProcessBeforeInitialization() 方法;
7 .如果 bean 实现了 InitializingBean 接口, Spring 将调用它们的 after-PropertiesSet() 方法。类似地,如果 bean 使用 init-
method 声明了初始化方法,该方法也会被调用;
8 .如果 bean 实现了 BeanPostProcessor 接口, Spring 将调用它们的 post-ProcessAfterInitialization() 方法;
9 .此时, bean 已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
10 .如果 bean 实现了 DisposableBean 接口, Spring 将调用它的 destroy() 接口方法。同样,如果 bean 使用 destroy-method 声明了销
毁方法,该方法也会被调用。