ssm框架整合
1.springMVC与spring的整合
-
引入依赖jar包;(spring的相关jar(core,aop,test);springMVC的相关jar(web,webMVC,jackson,文件上传))
-
分清楚父子容器。
-
spring父容器保存除了控制层以外的其他所有bean对象。
-
在ContextLoaderListener监听器中:
WebApplicationContext root = this.createWebApplicationContext(servletContext); root.setConfigLocation("classpath:spring.xml") root.refresh(); servletContext.setAttribute("WebApplicationContext.ROOT", root);
-
-
springMVC子容器仅保存控制层bean对象,确保控制层框架的职责单一。
-
在DispatcherServlet这个servlet中:
WebApplicationContext root = servletContext.getAttribute("WebApplicationContext.ROOT"); wac.setParent(root)
-
-
控制层的bean要依赖其他bean,所以子容器要持有父容器。
-
2.mybatis与spring的整合
- 添加mybatis.jar,数据库驱动包;Druid连接池包;mybatis-spring整合包;spring-jdbc.jar
- 创建dao.xml,创建bean对象(DruidDataSource,SqlSessionFactoryBean)
- 创建SqlSessionFactory,需要用到哪些数据(连接池,映射文件,别名,mybatis的settings配置)
- 创建mapper接口的扫描,目的在tomcat启东时,把接口的代理对象创建出来放在spring容器中。
xml配置:init-method
注解:@PostConstruct
编程时:从InitializingBean接口,重写afterPropertiesSet方法,达到bean实例化后立即执行afterPropertiesSet。
3.事务管理器
-
添加spring-tx.jar,spring-jdbc
-
配置spring提供的事务管理器对象DataSourceTransactionManager
声明式事务:
-
基于注解@Transactional,推荐使用这种。
-
<tx:annotation-driven></tx:annotation-driven>
-
-
基于xml配置配置事务通知,配置切入点表达式
<tx:advice id="txAdvice"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="insert*" propagation="REQUIRED"/> <tx:method name="update*" propagation="REQUIRED"/> <tx:method name="upt*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="remove*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut id="servicePointcut" expression="execution(* com.javasm.*.service.*.*(..))"></aop:pointcut> <aop:advisor advice-ref="txAdvice" pointcut-ref="servicePointcut"></aop:advisor> </aop:config>
-
4.mybatis的逆向工程
逆向工程:由数据库表,生成代理的过程
mybatis的逆向工程,能生成实体类,mapper接口,映射文件。
5.mybatis的分页插件
- PageHelper分页插件两个jar包;
- 配置分页插件到SqlSessionFactory对象。
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<!--分页参数合理化-->
<property name="properties">
<value>reasonable=true</value>
</property>
</bean>
</array>
</property>
- 在handler处理器中使用.
PageHelper.startPage(pageNum,pageSize);
List<Sysuser> sysusers = us.selectUsers(user);
PageInfo pageInfo = new PageInfo(sysusers);//total,list,pageNum,pageSize,pages
6.日志组件
调试日志(开发时)
用户行为日志 (上线时)
异常日志(程序错误error,上线时)
日志组件,把日志分了7个级别,主要知道这四个DEBUG–>INFO–>WARN–>ERROR
System.out.println("")降低程序执行效率。
日志组件有两类:
日志接口组件:common-logging,slf4j,供中间件使用。
日志实现:log4j,logback,log4j2
6.1.log4j日志
- 加jar包;
- 加配置;
log4j.rootLogger:对所有的包,全局日志级别定义,输出位置1,输出位置2
log4j.appender.输出位置名称
log4j.logger:对某个包下的类定义日志级别
- 代码;
6.2.log4j2日志
支持异步日志。使用异步生产者消费者Disruptor组件。
6.3.slf4j日志接口
在项目中使用:
日志门面SLF4J+日志实现log4j2
类中加成员变量:private org.slf4j.Logger l = LoggerFacgtory.getLogger(当前类Class对象);
记录日志:l.debug;l.info;l.warn;l.error