SSM框架
2020-07-18 15:39:07 0 举报
AI智能生成
记录Spring、SPringMVC和MyBatis整合后SSM的各个核心组件与常用注解!
作者其他创作
大纲/内容
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
整合思路
DispatcherServlet 启动的springMVC工厂,负责生产C及springMVC自己的系统组件
ContextLoaderListener 启动的spring工厂,负责生产其他所有组件
ContextLoaderListener 启动的spring工厂,负责生产其他所有组件
springMVC的工厂会被设置为spring工厂的子工厂,可以随意获取spring工厂中的组件
过程:数据库 -> Dao/Mapper -> Service -> Conroller(Handler) -> JSP -> 浏览器
框架整合开发步骤
创建一个Maven项目
计划导入所需依赖至pom.xml文件中(声明war包打包方式)
创建web项目目录并配置tomact服务器
创建spring-mvc.xml文件并添加context、mvc的Schema
注解扫描器(只扫描Controller)
配置注解扫描驱动
FastJson转换器
注意:使用FastJson时需要安装(覆盖Jackson)FastJson,导入依赖并为JavaBean实现Serializable接口进行序列化
视图解析器
处理静态资源
异常解析器
配置拦截器(拦截路径)
上传解析器
创建spring-context.xml文件并添加context、aop、tx的Schema
jdbc
Durid连接池
SqlSessionFactory
连接池(数据源)
注册Mapper
注册的JavaBean别名
关联mybatis-config.xml核心配置文件
Dao/Mapper扫描器
注解扫描器(忽略扫描Controller)
事务管理器
配置事务管理驱动
开启AOP注解
Quartz定时任务
任务详情
触发器
调度器
创建mybatis-config.xml文件
开启二级缓存
配置分页插件PageHelper
创建logback.xml文件或log4j.xml
配置日志相关
配置web.xml文件(前端控制器)
配置DispatcherServlet和加载spring-mvc.xml文件并映射Servlet(SpringMVC工厂)
创建监听器加载spring-context.xml(Spring工厂)
声明验证码组件
常用注解
Service层相关
@Service
将该类自动注入到Spring容器中
Dao层/Mapper层相关
@repository
用于Dao层/Mapper层实现类注入到Spring容器中
Controller层相关
@Controller
标注Controller控制器并由Spring管理
其他
@component
把pojo实例化到spring容器中(通用)
@Scope
用户控制Bean的创建模式(单例、多例)
@DateTimeFormat
修改默认日期格式,用于修改占位符对象的日期格式(参数列表)
注入相关
@Autowired
基于类型自动注入
@Resource
基于名称自动注入
@Qualifier("userDao")
限定要自动注入的bean的id,一般和@Autowired联用
@Value
注入简单类型数据 (jdk8种+String)
事务相关
@Transactional
注入事务控制由Spring来管理事务
@Transactional(propagation=Propagation.SUPPORTS)
该方法自己的事务控制,仅对此方法有效(用于查询操作)
AOP相关
@Aspect
声明类为切面类并类中包含切入点(pointcut)和通知(advice)
@Component
声明组件由Spring工厂管理
@Pointcut("execution(切入点表达式)")
定义切入点
AOP通知
@Before("切入点方法")
前置通知
@AfterReturning(value="切入点方法",returning="ret")
后置通知
@Around("切入点方法")
环绕通知
@AfterThrowing(value="切入点方法",throwing="ex")
异常通知
Junit相关
@RunWith(SpringJUnit4ClassRunner.class)
由SpringJUnit4ClassRunner启动测试
@ContextConfiguration("classpath:spring-context.xml")
读取Spring核心配置文件
注意:测试时需要注入即将测试的实体类
路径相关
@RequestMapping("/路径")
请求路径
produces = "text/html;charset=utf-8"防止乱码
method = RequestMethod.GET声明请求方式
传值相关
@SessionAttributes({"值1","值2"})
即将存储的值复制一份存入Session域中
Json相关
普通注解
@ResponseBody
将handler的返回值,转换成json字符串,并将json响应给客户端
@RestController
等价于在类中的每个方法上都加了@ResponseBody
@RequestBody
@RequestBody将请求体中的json数据转换为java对象
Jackson相关
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
日期格式化
@JsonProperty("new_name")
修改属性名
@JsonIgnore
生成json字符串时,忽略此属性
@JsonInclude(JsonInclude.Include.NON_NULL)
null值属性不输出
@JsonInclude(value= JsonInclude.Include.NON_EMPTY)
empty属性不输出(空串、长度为0的集合、null值)
@JsonSerialize(using = MySerializer.class)
使用MySerializer输出某属性(自定义序列化)
使用时需要继承JsonSerializer<T>类并覆盖方法
FastJson相关
@JSONField(format="yyyy/MM/dd")
日期格式化
@JSONField(name="birth")
修改属性名
@JSONField(serialize = false)
忽略属性
@JSONField(serialzeFeatures = SerializerFeature.WriteMapNullValue)
默认会忽略所有null值,有此注解会输出null
@JSONField(serialzeFeatures = SerializerFeature.WriteNullStringAsEmpty)
空的String类型输出为""(空串)
@JSONField(serializeUsing = MySerializer.class)
使用MySerializer输出某属性(自定义序列化)
使用时需要实现ObjectSerializer接口并覆盖其方法
子主题
0 条评论
下一页