web.xml中的配置
SSM框架的整合其实是Spring和SpringMVC的整合以及Spring和Mybatis进行整合。
当项目启动的时候,需要服务器为SpringMVC创建前端控制器,前端控制器就是一个Servlet,即DispatcherServlet,所以需要在web.xml配置该Servlet,由于该对象的创建需要初始化参数,而这些参数是通过applicationcontext-mvc.xml文件进行配置的,所以在创建DispatcherServlet的时候需要指定读取该文件的路径,这需要通过该对象的初始化参数进行配置。
我们在服务器启动的同时又需要启动Spring容器,所以就需要在web.xml中增加一个配置,实现对Spring容器的加载,这时通过spring框架下的项目启动监听器(ContextLoaderListener)就可以达到这个目的。
由于服务器启动后无法直接读取WEB-INF下的配置文件,所以需要通过context-param标签重新指定spring配置文件的路径,这时通过contextConfigLocation进行配置。
applicationcontext-mvc.xml配置
该文件在和Spring进行整合的时候没有进行其他的的配置,因为SpringMVC中的对象本来就在Spring容器中。由于该配置文件是对web层进行的的配置,所以第一步需要开启组件扫描,去扫描Controller所在的包。
由于SpringMVC的运行需要三大组件即,处理器映射器,处理器适配器和视图解析器,这三个都需要配置开启。
applicationcontext-dao.xml配置
由于dao是对数据库进行操作的,所以需要配置数据源,可以在该文件中直接赋值,也可以通过db.properties对数据库的属性进行设置然后引入该xml文件中,获得数据源,然后通过该数据源去配置一个Bean标签获得SqlSessionFactoryBean对象,最后需要得到与接口对应的Mapper映射文件,所以需要配置代理管理类MapperScannerConfigure,指定映射的配置文件所在的包路径basePackage。
applicationcontext-tx.xml配置
首先需要开启组件扫描,通过组件扫描使所有的注解生效。由于在service主要涉及事务,所以需要获得在applicationcontext-dao.xml文件中的数据源创建平台事务管理器,transactionManager.由于事务管理是依赖于AOP的,所以需要对二者进行配置,在进行事务配置的时候,通过<tx:advice id="tx" transaction-manager="transactionManager">配置通知,其中通过<tx:attributes>指定在那些方法需要增强。通知配置好后需要通过AOP配置切面,切面中织入切入点到代理对象。
1、mybatis
mybatis环境的搭建
第一步、编写sqlMapConfig.xml配置文件
第二步、编写实体类接口
第三步、编写映射文件Mapper.xml
第四步、编写测试类,创建SqlSession对象
第五步、通过SqlSession对象的getMapper获取代理对象
第六步、通过代理对象调用方法实现方法的调用
2、Spring
Spring环境搭建
Spring核心特征是IOC和
配置文件名称
第一步、创建applicationcontext.xml
第二步、在测试类中读取该文件并创建applicationContext的对象cx
第三步、通过cx.getBean()方法获取对象
第四步、通过获取的对象进行操作
AOP操作如下
第一步,编写增强类(增强对象)
第二步、在applicationcontext.xml中编写AOP的配置信息,例如
<aop:config> <aop:aspect id="aspect" class=""> <aop:before method="before" pointcut="public void *.*..*.*(..)"> </aop:aspect> </aop:config>
第四步、编写测试类
Spring的事务操作如下
<!--事务管理器配置--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置事务的通知--> <!-- id="advice" 表示IOC容器中真正的通知对象的id。 transaction-manager="transactionManager" 表示指定当前要对哪个事务管理器进行配置 如果事务管理器在IOC容器中的id为transactionManager,此配置可以省略。 --> <tx:advice id="advice" transaction-manager="transactionManager"> <tx:attributes> <!-- <tx:method 指定目标对象中切入点的方法名 name="*" 表示目标对象中所有方法都是切入点,都要有事务。 name="save*" 目标对象中所有以save开头的方法要走事务。 name="update*" 目标对象中所有以update开头的方法要走事务。 name="delete*" 目标对象中所有以delete开头的方法要走事务。 name="find*" 所有以find开头的方法不走事务。 propagation="REQUIRED" 指定事务的传播行为,如果要事务就配置REQUIRED,不要就配置SUPPORTS read-only="true" 是否只读,如果是true,表示只能做查询操作,没有事务。false就什么可以操作。 rollback-for="" 指定一个异常,出现此异常才回滚,其余异常都不回滚。不配置默认表示所有异常都回滚。 no-rollback-for="" 指定一个异常,出现此异常不回滚,其余异常都回滚。不配置默认表示所有异常都回滚。 timeout="-1" 指定超时时间,不指定默认是-1,表示永不超时 isolation="" 指定事务的隔离级别,默认就使用当前数据库默认的事务隔离级别。 --> <tx:method name="save*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="delete*" propagation="REQUIRED"/> <tx:method name="find*" read-only="true"/> <tx:method name="*"/> </tx:attributes> </tx:advice>
3、SpringMVC
第一步、在web.xml中配置前端控制器
第二步、在前端控制器中的初始化参数设置ContextConfigLoaction
第三步、编写spring-mvc的配置文件,编写视图解析器并开启处理器映射器和处理器适配器两大组件以及注解。
SSM整合
1、Spring与Mybatis的整合
第一步、在applicationcontext.xml中添加数据源
第二步、在applicationcontext.xml中添加SqlSession(SqlSession要在容器内)
第三步、在applicationcontext.xml中添加MapperScannerConfig
2、Spring与SpringMVC的整合
Spring和SpringMVC的整合只需保证在web服务器启动的时候Spring容器也启动就可以完成整合。
第一步、在web.xml中添加ContextLoaderListener项目加载器监听器
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
第二步、重新指定Spring的配置文件路径
<!-- Spring配置文件开始 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-config.xml </param-value> </context-param>