一:spring概述
Spring是什么?
1.Spring是分层的Java SE/EE应用轻量级开源框架,以ioC (inversr of Control:反转控制)和AOP (Aspect Oriented Programming:面向切面编程)为核心。
2.提供了视图层SpringMVC和持久层Spring JDBCTemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架
Spring的发展
创始人:Rod Johnson
Spring的优势
1.方便解耦,简化开发
2.AOP编程的支持
3.声明事务的支持
4.方便程序的测试
Spring的体系
Beans,core,Context,SpEll
二:使用 spring 的 IOC 解决程序耦合
控制反转IoC(Inversion of Control)
控制:控制的双方是什么?谁控制谁?
主控方:Spring、
被控方:应用程序所使用的资源
(原始)应用程序直接控制需要的外部资源
(Spring)Spring控制所需要的外部资源
反转:什么是反转?反转什么?
正向:应用程序直接调用资源
反向:应用程序依赖Spring为其提供资源
反转的是资源的控制权
应用程序由主动调用资源,变为被动的等待Spring提供资源
有什么好处?
正向缺点:应用程序控制的资源分布在程序的每一个地方
反向的优点:所有的资源都在Spring中,便于管理,降低了耦合度。
总结:Spring反向控制应用程序所需要使用的外部资源。资源受Spring管理,利用率最大化。
三:ApplicationContext的三个实现类
ClassPathXmlApplicationContext:
它是从类的根路径下加载配置文件 推荐使用这种
FileSystemXmlApplicationContext:
它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
AnnotationConfigApplicationContext:
当我们使用注解配置容器对象时,需要使用此类来创建 spring 容器。它用来读取注 解。
代码测试
ClassPathXmlApplicationContext源码下
在这里插入代码
ClassPathXmlApplicationContext application = new ClassPathXmlApplicationContext(“applicationContext.xml”);
FileSystemXmlApplicationContext
FileSystemXmlApplicationContext application = new FileSystemXmlApplicationContext(“A:\workspace\idea\spring\src\applicationCo ntext.xml”);
四:BeanFactory和ApplicationContext的区别
BeanFactory 才是Spring容器中的顶层接口。ApplicationContext 是它的子接口。 BeanFactory 和 ApplicationContext 的区别:
ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。 BeanFactory:什么使用什么时候创建对象。
代码测试
BeanFactory application = new XmlBeanFactory(new ClassPathResource(“applicationContext.xml”)); IUserService userService = (IUserService) application.getBean(“userService”);