SSM

总结

SSM就是指的:SpringMVC、SpringFramework、MyBatis

SpringMVC

原文地址:什么是Spring MVC

什么是MVC

MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范

Model

Model(模型):数据模型,提供要展示的数据,因此包含数据(java bean)行为(service层),可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务

View

View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

Controller

Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。

最典型的MVC就是JSP + servlet + javabean的模式。

Spring 常用注解总结

核心注解

注解 作用域 说明 适用场景 示例
@Component 通用组件注解,标记Spring管理的组件 通用组件注册 @Component
@Service 业务层组件注解 业务逻辑层组件 @Service
@Repository 数据访问层组件注解 数据访问层组件 @Repository
@Controller 控制层组件注解 Web控制器组件 @Controller
@RestController RESTful控制器注解(@Controller + @ResponseBody) REST API控制器 @RestController
@Configuration 配置类注解 Java配置类 @Configuration
@ComponentScan 组件扫描注解 指定组件扫描包路径 @ComponentScan("com.example")

依赖注入注解

注解 作用域 说明 适用场景 示例
@Autowired 字段/方法/构造器 自动装配依赖(默认按类型) 自动注入依赖对象 @Autowired
@Qualifier 字段/方法/参数 指定具体Bean名称 解决同类型多个Bean冲突 @Qualifier("userDao")
@Resource 字段/方法 JSR-250注解(默认按名称) 按名称注入Bean @Resource(name="userDao")
@Inject 字段/方法/构造器 JSR-330注解 标准化依赖注入 @Inject
@Value 字段/方法/参数 注入属性值 注入配置属性值 @Value("${app.name}")

Bean管理注解

注解 作用域 说明 适用场景 示例
@Bean 方法 在配置类中定义Bean 手动创建和配置Bean @Bean("userService")
@Scope 类/方法 指定Bean作用域 控制Bean生命周期 @Scope("prototype")
@Primary 类/方法 指定首选Bean 解决自动装配歧义 @Primary
@Lazy 类/方法 延迟初始化Bean 优化启动性能 @Lazy
@Profile 类/方法 指定环境配置 多环境配置管理 @Profile("dev")

Web相关注解

注解 作用域 说明 适用场景 示例
@RequestMapping 类/方法 通用请求映射 定义HTTP请求映射 @RequestMapping("/users")
@GetMapping 方法 GET请求映射 查询操作 @GetMapping("/{id}")
@PostMapping 方法 POST请求映射 新增操作 @PostMapping
@PutMapping 方法 PUT请求映射 更新操作 @PutMapping("/{id}")
@DeleteMapping 方法 DELETE请求映射 删除操作 @DeleteMapping("/{id}")
@RequestParam 参数 获取请求参数 获取URL参数 @RequestParam("id") Long id
@PathVariable 参数 获取路径参数 获取RESTful路径变量 @PathVariable("id") Long id
@RequestBody 参数 获取请求体数据 接收JSON数据 @RequestBody User user
@ResponseBody 方法/返回值 返回数据到响应体 返回JSON/XML数据 @ResponseBody
@RequestHeader 参数 获取请求头 获取HTTP头信息 @RequestHeader("User-Agent") String userAgent
@CookieValue 参数 获取Cookie值 获取Cookie信息 @CookieValue("JSESSIONID") String sessionId

参数校验注解

注解 作用域 说明 适用场景 示例
@Valid 参数 启用参数验证 验证请求参数 @Valid @RequestBody User user
@Validated 类/参数 启用分组验证 分组参数验证 @Validated
@NotNull 字段 不能为null 必填字段验证 @NotNull
@NotBlank 字段 字符串不能为空 字符串必填验证 @NotBlank
@Min/@Max 字段 数值范围限制 数值范围验证 @Min(1)
@Size 字段 长度限制 字符串长度/集合大小验证 @Size(min=2, max=20)
@Pattern 字段 正则表达式匹配 格式验证 @Pattern(regexp="^1[3-9]\\d{9}$")

AOP相关注解

注解 作用域 说明 适用场景 示例
@Aspect 定义切面 面向切面编程 @Aspect
@Pointcut 方法 定义切点 定义横切关注点 @Pointcut("execution(* *.service(..))")
@Before 方法 前置通知 方法执行前处理 @Before("pointcut()")
@After 方法 后置通知 方法执行后处理 @After("pointcut()")
@Around 方法 环绕通知 方法执行前后环绕处理 @Around("pointcut()")
@AfterReturning 方法 返回通知 方法正常返回后处理 @AfterReturning("pointcut()")
@AfterThrowing 方法 异常通知 方法抛异常后处理 @AfterThrowing("pointcut()")

事务管理注解

注解 作用域 说明 适用场景 示例
@Transactional 类/方法 声明式事务 数据库事务管理 @Transactional
@TransactionalEventListener 方法 事务事件监听 事务相关事件处理 @TransactionalEventListener

配置相关注解

注解 作用域 说明 适用场景 示例
@PropertySource 加载属性文件 加载外部配置文件 @PropertySource("classpath:app.properties")
@Import 导入其他配置类 组合多个配置类 @Import({Config1.class, Config2.class})
@Conditional 类/方法 条件化配置 条件化Bean注册 @Conditional(WindowsCondition.class)
@EnableAutoConfiguration 启用自动配置 Spring Boot自动配置 @EnableAutoConfiguration

测试相关注解

注解 作用域 说明 适用场景 示例
@SpringBootTest Spring Boot测试 集成测试 @SpringBootTest
@Test 方法 测试方法 单元测试方法 @Test
@BeforeEach 方法 测试前执行 测试初始化 @BeforeEach
@AfterEach 方法 测试后执行 测试清理 @AfterEach
@MockBean 字段 模拟Bean 模拟依赖对象 @MockBean
@SpyBean 字段 监视Bean 部分模拟真实对象 @SpyBean

其他常用注解

注解 作用域 说明 适用场景 示例
@Scheduled 方法 定时任务 定时执行任务 @Scheduled(cron="0 0 12 * * ?")
@Async 方法 异步执行 异步处理任务 @Async
@EventListener 方法 事件监听 监听应用事件 @EventListener
@Order 类/方法 指定执行顺序 控制组件执行顺序 @Order(1)
@DependsOn 类/方法 指定依赖关系 控制Bean初始化顺序 @DependsOn("databaseInitializer")