Struts2整合Struts
- 添加Spring 以及 Struts 的 jar
必须添加由 Struts2提供的 Struts整合Spring 的 struts-spring-plugin.jar - 做初始化配置 在web.xml 文件里面做初始化配置
i. struts2 的 filter ( 核心控制器 )
ii. 配置Spring 让项目启动的时候,通过web应用服务器来帮我们创建一个Spring容器。
实际意义:配置spring后,在服务器启动的时候,会在家spring配置文件,创建spring容器。
iii. 由 spring 创建 action 对象,然后把该对象(bean的id)交给struts2使用
(就是让 struts.xml 标签的 action标签的class属性使用,class的值写spring容器
创建的action对象 写bean的id )
iv. 如果struts2需要按照类型自动装配spring容器bean标签的id,那么就需要在struts.xml
文件中配置<constant name="struts.objectFactory.spring.autoWire" value="type" /><constant name="struts.objectFactory.spring.autoWire" value="type" /> value="name" 是按照 bean 标签的 id 来匹配
Struts2整合MyBatis
- 配置数据源
- 在spring容器中配置 SqlsessionFactoryBean
i. 通过SqlsessionFactoryBean的属性dataSource注入数据源<property name="dataSource" ref="数据源/dataSource" />
ii. 通过SqlsessionFactory的属性mapperlocations加载映射文件(mapper文件)
<property name="mapperLocations"> <list> <!-- * 代表加载改为之下的所有 Mapper.xml文件 --> <value>classpath:com/ssdemo/dao/*Mapper.xml</value> </list> </property>
iii. 通过SqlsessionFactory的属性 typeAliasesPackage给指定包下的所有
实体类起别名,别名就是类名,是由spring容器自动创建的(可写可不写)<!-- entity 下的所有类起别名 比如该包下有 com.ssdemo.entity.Book 类 那么别名是 Book --> <property name="typeAliasesPackage" value="com.ssdemo.entity" ></property>
iv. 通过Spring容器创建 MapperScannerConfigUrer对象,
再给该对象的属性basePackage赋值,值是dao包的路径(看自己的项目写),
该操作是扫描该路径的所有接口,并生成接口的代理对象,
代理对象的名字是 :接口名(开头小写),由spring容器自动生成的。<!-- 使用 Spring把所有指定位置的Dao接口 生成 该接口的代理对象 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 加载该包下面的所有接口,然后自动的动态生成接口的代理对象 类似于 sqlsession.getMapper(BookDao.class); 那么动态生成的代理对象名字是什么呢? 例: com.ssdemo.dao.BookDao 那么名字就是 bookDao --> <property name="basePackage" value="com.ssdemo.dao"></property> </bean>
v. 如果代理对象对应多个工厂的时候,就需要使用sqlSessionFactoryBeanName
属性 值是 SqlSessionFactoryBean 的对象 (bean标签的id)<property name="sqlSessionTemplateBeanName" ref="sqlSessionFactory工厂的bean标签 id"></property>
vi. 事务处理:声明式事务处理