Spring中IOC的概念,控制反转概念其实包含两个层面的意思,“控制”是接口实现类的选择控制权;而“反转”是指这种选择控制权从调用者转移到外部第三方或容器的手中。BeanFactory、ApplicationContext和WebApplicationContext是Spring框架三个最核心的接口,框架中其他大部分的类都围绕他们展开、为他们提供支持和服务。在这些支持类中,Respurce是一个不可忽视的重要接口,框架通过Resource实现了和具体资源的解耦,不论他们位于何种存储介质中,都可以通过相同的实例返回。与Resource配合的另一个接口是ResourceLoader,ResourceLoader采用了策略模式,可以通过传入资源地址的信息,自动选择适合的底层资源实现类,为上层对资源的引用提供极大的便利。
一、IOC 控制反转:
1、“控制”是指接口实现类的选择控制权
2、“反转”是指这种选择控制权从调用类转移到外部第三方类或者容器手里
二、Spring三大最核心接口:
BeanFactory
1、Spring框架的基础设施,面向Spring本身。
2、在初始化容器时,并未实例化Bean,直到第一次访问某个Bean时才实例目标Bean
3、若需要对bean定义后处理器,必须在代码中通过手工调用spring方法进行注册
4、初始化方式 new XmlBeanFactory(new Resource())
ApplicationContext
1、面向使用Spring框架的开发者,几乎所有的应用场合我们都直接使用ApplicationContext文件中定义的 Bean
2、在初始化应用上下文时就实例化所有的单例的Bean
3、若需要对bean定义后处理器,其会利用反射机制自动识别出配置文件中的Processor,并自动注册到应用上下文中
4、初始化方式
new ClassPathXmlApplication("classpath:bean.xml")
new FileSystemXmlApplicationContext("file:beans.xml")
new AnnotationConfigApplicationContext(Beans.class)
WebApplicationContext
1、WebApplication需要ServletContext实例,也就是说他必须要在拥有Web容器的前提下才能完成启动工作。
2、Spring分别提供了用于启动WebApplicationConetext的Servlet和Listener,在web.xml中配置
org.springframework.web.context.ContextLoaderServlet
org.springframework.web.context.ContextLoaderListener
3、WebApplicationContext需要使用日志功能
用户可以将Log4j配置文件放到类路径 WEB-INF/classes下,这时Log4j引擎即可顺利启动
用户可以在web.xml中通过Log4jConfigServlet和Log4jConfigListener指定Log4j配置文件位置,但要注意启动顺序(load-on-startup)
4、使用标注@Configuration的java类提供信息,contextClass、contextConfigLocation
三、Bean生命周期改变方式:
1、<bean>中的init-method 和 destroy-method 这两个属性为Bean指定初始化和销毁的方法
2、InitDestroyAnonotationBeanPostProcessor 的 @PostConstruct、@PreDestroy
思维导图: