配置方法一:完全使用配置类
1.父工程的打包方式为pom,即不打包。
2.导入依赖
2.1 spring相关依赖:spring-aop和sapring-aspect实现aop、spring-context提供ioc和di,
spring-tx和spring-jdbc实现声明式事务,spring-test提供单元测试,spring-beans
2.2 springmvc相关依赖:spring-webmvc,servlet-api,jackson处理json数据,视图thymeleaf
2.3 mybatis相关依赖:mybatis,mysql驱动,pagehelper分页插件
2.4 整合相关依赖:mybatis-spring、spring-web加载spring的web容器,数据库连接池druid,lombok插件,logback,log4j日志相关
3. springmvc层配置
定义一个配置类,使用@Configuration标识,然后实现WebMvcConfigurer,表示使用里面的方法来简化配置。
使用@Component注解定义包扫描路径
使用@EnableWebMvc配置handlerMapping和handlerAdapter,还有json格式的转换器。
重写接口WebMvcConfigurer的方法开启处理静态资源
4. spring配置aop和tx事务管理
5. 配置mybatis
/**
* projectName: com.atguigu.config
*
* description: 持久层配置和Druid和Mybatis配置 使用一个配置文件
*/
@Configuration
public class MapperJavaConfigNew {
/**
* 配置SqlSessionFactoryBean,指定连接池对象和外部配置文件即可
* @param dataSource 需要注入连接池对象
* @return 工厂Bean
*/
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
//实例化SqlSessionFactory工厂
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//设置连接池
sqlSessionFactoryBean.setDataSource(dataSource);
//TODO: 替代xml文件的java配置
/*
<settings>
<!-- 开启驼峰式映射-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 开启logback日志输出-->
<setting name="logImpl" value="SLF4J"/>
<!--开启resultMap自动映射 -->
<setting name="autoMappingBehavior" value="FULL"/>
</settings>
<typeAliases>
<!-- 给实体类起别名 -->
<package name="com.atguigu.pojo"/>
</typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--
helperDialect:分页插件会自动检测当前的数据库链接,自动选择合适的分页方式。
你可以配置helperDialect属性来指定分页插件使用哪种方言。配置时,可以使用下面的缩写值:
oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
(完整内容看 PageAutoDialect) 特别注意:使用 SqlServer2012 数据库时,
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md#%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E6%95%B0%E6%8D%AE%E5%BA%93%E6%96%B9%E8%A8%80
-->
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
*/
//settings [包裹到一个configuration对象,切记别倒错包]
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setMapUnderscoreToCamelCase(true);
configuration.setLogImpl(Slf4jImpl.class);
configuration.setAutoMappingBehavior(AutoMappingBehavior.FULL);
sqlSessionFactoryBean.setConfiguration(configuration);
//typeAliases
sqlSessionFactoryBean.setTypeAliasesPackage("com.atguigu.pojo");
//分页插件配置
PageInterceptor pageInterceptor = new PageInterceptor();
Properties properties = new Properties();
properties.setProperty("helperDialect","mysql");
pageInterceptor.setProperties(properties);
sqlSessionFactoryBean.addPlugins(pageInterceptor);
return sqlSessionFactoryBean;
}
/**
* 配置Mapper实例扫描工厂,配置 <mapper <package 对应接口和mapperxml文件所在的包
* @return
*/
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
//设置mapper接口和xml文件所在的共同包
mapperScannerConfigurer.setBasePackage("com.atguigu.mapper");
return mapperScannerConfigurer;
}
}
二、xml方式配置整合
web.xml:配置编码过滤器,配置处理请求方式的过滤器
配置前端控制器,引入springmvc的配置文件
定义监听器,在springmvc的容器初始化之前初始化spring容器
springmvc:扫描控制器组件,定义视图解析器,处理静态资源,开启注解驱动,配置视图控制器,文件上传解析器等等
spring:扫描业务层组件,开启事务注解驱动,开启aop相关
mybatis:扫描mapper层组件,开启驼峰映射,包别名,分页拦截器,数据源等等,这些可以在spring的配置文件中配置。