1. Spring框架支持Web项目


   问题在于Web项目是没有明确的入口,IOC容器如何创建?


   解决方案是在web.xml中配置一个监听器的类。这个监听器去监听Serlvet容器的创建,则自动执行方法来加载IOC容器。Serlvet容器是在Web项目启动时就加载。


添加步骤:


1.添加Spring的相关包,在以前的基础上再添加一个包:spring-web-4.3.10.RELEASE.jar
2.需要添加配置文件。
3.在web.xml文件中创建监听器对象。这个监听器对象就会自动来创建IOC容器。同时需要指定配置文件的路径。


    2. Spring整合MyBites


  问题


1:MyBites相关的API对象不需要自己创建,全部交给Spring创建才是正确的。


2:: MyBites的配置文件还还配置了数据源对象,这个对象也要交给Spring框架。


  3:MyBites还通过SqlSession会话创建了许多的持久化接口的代理对象。这些对象也应该交给Spring框架来创建。


最大的改变是:Spring框架整合MyBites时,SqlSessionFactory类被弃用,改成了SqlSessionFactoryBean对象。而这个对象不在mybatis-3.4.5.jar包中,而是在mybatis-spring-1.3.0.jar包中,这个包是MyBites框架提供的专门用于整合Spring框架而实现的。


Mybatis的主配置文件里面的配置基本上都可以转移到Spring的配置文件中在配置SqlSessionFactoryBean这个对象时一起配置.


(以下部分操作根据自己项目选择相关方法)


3.连接相关连接池

 4. MyBatis配置在Spring框架的配置文件中     

5. 业务层类的调整    

 6. IOC容器的加载


   因为是Web项目,IOC容器不能向Java项目一样在main方法创建。解决方案是去监听Serlvet容器加载时来创建 IOC容器,所以创建一个类,实现ServletContextListener接口,来监听Serlvet容器,创建IOC,并存储在Application作用域中。



7. 在Serlvet里面取IOC容器,再获取业务层的对象:

     支持:
   1. MyBatis


MyBatis 是持久层框架(ORM),它支持定制化 SQL、存储过程以及高级映射(动态MYSQL)。它可以把程序中的对象映射到数据库中形成数据行。也可以把数据库中的数据行映射成程序中的对象,减少了很多JDBC 代码和手动设置参数以及获取结果集,但需要我们手写SQL语句(半自动化)。可以使用XML或注解来配置和映射原生信息,将接口和Java类和对象映射成数据库中的记录。每个MyBatis应用程序主要都是使用SqlSessionFactor实例的,一个SqlSessionFactory实例可以通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder可以从一个xml配置文件或者一个预定义的配置类的实例获得。



2.IOC(Inversion of Control)控制反转;它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期)。用于管理对象的创建和依赖关系的维护。解耦,由容器维护其具体的对象。托管了类的产生过程,


IOC的好处有哪些?


1.它将最小化应用程序中的代码量。


2.它将使您的应用程序易于测试,因为它不需要单元测试用例中的任何单例或JNDI查找机制。


3.它以最小的影响和最少的侵入机制促进松耦合,


4.它支持即时的实例化和延迟加载服务。


Spring的IOC支持哪些功能?


1.依赖注入(最重要)------从XML的配置上说,即ref标签。对应Spring RuntimeBeanReference对象


2.依赖检查、自动装配、支持集合、指定初始化方法和销毁方法


3.支持回调某些方法(但是需要实现Spring接口,略有侵入)


4.容器管理着Bean的生命周期,控制着Bean的依赖注入。


Spring IOC的实现机制


Spring中的IOC的实现原理就是工厂模式+反射机制。