ssm注解总结
前言
注解开发,暂时只收录了spring 框架和sprinvmvc框架。后续有待补充
spring框架
注解1:@Component等
名称 | @Component/@Controller/@Service/@Repository |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
设置该类为spring管理的bean |
属性 |
value(默认):定义bean的id |
注解2:@Configuration
名称 | @Configuration |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
设置该类为spring配置类 |
属性 |
value(默认):定义bean的id |
注解3:@ComponentScan
名称 | @ComponentScan |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
设置spring配置类扫描路径,用于加载使用注解格式定义的bean |
属性 |
value(默认):扫描路径,此路径可以逐层向下扫描 |
小结:
- 记住@Component、@Controller、@Service、@Repository这四个注解
- applicationContext.xml中
<context:component-san/>
的作用是指定扫描包路径,注解为@ComponentScan
- @Configuration标识该类为配置类,使用类替换applicationContext.xml文件
- ClassPathXmlApplicationContext是加载XML配置文件
- AnnotationConfigApplicationContext是加载配置类
注解4:@Scope(Bean的作用范围)
名称 | @Scope |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
设置该类创建对象的作用范围 可用于设置创建出的bean是否为单例对象 |
属性 |
value(默认):定义bean作用范围, 默认值singleton(单例),可选值prototype(非单例) |
注解5:@PostConstruct(Bean的生命周期)
名称 | @PostConstruct |
类型 |
方法注解 |
位置 |
方法上 |
作用 |
设置该方法为初始化方法 |
属性 |
无 |
注解6:@PreDestroy(Bean的生命周期)
名称 | @PreDestroy |
类型 |
方法注解 |
位置 |
方法上 |
作用 |
设置该方法为销毁方法 |
属性 |
无 |
注解7:@Autowired
名称 | @Autowired |
类型 |
属性注解 或 方法注解(了解) 或 方法形参注解(了解) |
位置 |
属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面 |
作用 |
为引用类型属性设置值 |
属性 |
required:true/false,定义该属性是否允许为null |
注解8:@Qualifier
名称 | @Qualifier |
类型 |
属性注解 或 方法注解(了解) |
位置 |
属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 |
为引用类型属性指定注入的beanId |
属性 |
value(默认):设置注入的beanId |
注解9:@Value
名称 | @Value |
类型 |
属性注解 或 方法注解(了解) |
位置 |
属性定义上方 或 标准set方法上方 或 类set方法上方 |
作用 |
为 基本数据类型 或 字符串类型 属性设置值 |
属性 |
value(默认):要注入的属性值 |
注解10:@PropertySource
名称 | @PropertySource |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
加载properties文件中的属性值 |
属性 |
value(默认):设置加载的properties文件对应的文件名或文件名组成的数组 |
注解11:@Bean
名称 | @Bean |
类型 |
方法注解 |
位置 |
方法定义上方 |
作用 |
设置该方法的返回值作为spring管理的bean |
属性 |
value(默认):定义bean的id |
注解12:@Import
名称 | @Import |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
导入配置类 |
属性 |
value(默认):定义导入的配置类类名, 当配置类有多个时使用数组格式一次性导入多个配置类 |
注解开发总结
注解13:@RunWith
名称 | @RunWith |
类型 |
测试类注解 |
位置 |
测试类定义上方 |
作用 |
设置JUnit运行器 |
属性 |
value(默认):运行所使用的运行期 |
注解14:@ContextConfiguration
名称 | @ContextConfiguration |
类型 |
测试类注解 |
位置 |
测试类定义上方 |
作用 |
设置JUnit加载的Spring核心配置 |
属性 |
classes:核心配置类,可以使用数组的格式设定加载多个配置类 locations:配置文件,可以使用数组的格式设定加载多个配置文件名称 |
注解15:@EnableAspectJAutoProxy
名称 | @EnableAspectJAutoProxy |
类型 |
配置类注解 |
位置 |
配置类定义上方 |
作用 |
开启注解格式AOP功能 |
注解16:@Aspect
名称 | @Aspect |
类型 |
类注解 |
位置 |
切面类定义上方 |
作用 |
设置当前类为AOP切面类 |
注解17:@Pointcut
名称 | @Pointcut |
类型 |
方法注解 |
位置 |
切入点方法定义上方 |
作用 |
设置切入点方法 |
属性 |
value(默认):切入点表达式 |
注解18:@Before
名称 | @Before |
类型 |
方法注解 |
位置 |
通知方法定义上方 |
作用 |
设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行 |
注解19:@After(通知类型)
名称 | @After |
类型 |
方法注解 |
位置 |
通知方法定义上方 |
作用 |
设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法后运行 |
注解20:@AfterReturning (通知类型)
名称 | @AfterReturning |
类型 |
方法注解 |
位置 |
通知方法定义上方 |
作用 |
设置当前通知方法与切入点之间绑定关系,当前通知方法在原始切入点方法正常执行完毕后执行 |
注解21:@AfterThrowing (通知类型)
名称 | @AfterThrowing |
类型 |
方法注解 |
位置 |
通知方法定义上方 |
作用 |
设置当前通知方法与切入点之间绑定关系,当前通知方法在原始切入点方法运行抛出异常后执行 |
注解22:@Around (通知类型)
名称 | @Around |
类型 |
方法注解 |
位置 |
通知方法定义上方 |
作用 |
设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前后运行 |
注解23:@EnableTransactionManagement
名称 | @EnableTransactionManagement |
类型 |
配置类注解 |
位置 |
配置类定义上方 |
作用 |
设置当前Spring环境中开启注解式事务支持 |
注解24:@Transactional
名称 | @Transactional |
类型 |
接口注解 类注解 方法注解 |
位置 |
业务层接口上方 业务层实现类上方 业务方法上方 |
作用 |
为当前业务层方法添加事务(如果设置在类或接口上方则类或接口中所有方法均添加事务) |
springmvc框架
注解25:@Controller
名称 | @Controller |
类型 |
类注解 |
位置 |
SpringMVC控制器类定义上方 |
作用 |
设定SpringMVC的核心控制器bean |
注解26:@RequestMapping
名称 | @RequestMapping |
类型 |
类注解或方法注解 |
位置 |
SpringMVC控制器类或方法定义上方 |
作用 |
设置当前控制器方法请求访问路径 |
相关属性 |
value(默认),请求访问路径 |
注解27:@ResponseBody
名称 | @ResponseBody |
类型 |
类注解或方法注解 |
位置 |
SpringMVC控制器类或方法定义上方 |
作用 |
设置当前控制器方法响应内容为当前返回值,无需解析 |
注解28:@ComponentScan
名称 | @ComponentScan |
类型 |
类注解 |
位置 |
类定义上方 |
作用 |
设置spring配置类扫描路径,用于加载使用注解格式定义的bean |
相关属性 |
excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)和具体项(classes) includeFilters:加载指定的bean,需要指定类别(type)和具体项(classes) |
注解29:@RequestParam(普通参数传递)
名称 | @RequestParam |
类型 |
形参注解 |
位置 |
SpringMVC控制器方法形参定义前面 |
作用 |
绑定请求参数与处理器方法形参间的关系 |
相关参数 |
required:是否为必传参数 defaultValue:参数默认值 |
注解30:@EnableWebMvc
名称 | @EnableWebMvc |
类型 |
配置类注解 |
位置 |
SpringMVC配置类定义上方 |
作用 |
开启SpringMVC多项辅助功能 |
注解31:@RequestBody
名称 | @RequestBody |
类型 |
形参注解 |
位置 |
SpringMVC控制器方法形参定义前面 |
作用 |
将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次 |
@RequestBody与@RequestParam区别
-
区别
- @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
- @RequestBody用于接收json数据【application/json】
-
应用
- 后期开发中,发送json格式数据为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
注解32:@DateTimeFormat
名称 | @DateTimeFormat |
类型 |
形参注解 |
位置 |
SpringMVC控制器方法形参前面 |
作用 |
设定日期时间型数据格式 |
相关属性 |
pattern:指定日期时间格式字符串 |
注解33:@ResponseBody
名称 | @ResponseBody |
类型 |
方法\类注解 |
位置 |
SpringMVC控制器方法定义上方和控制类上 |
作用 |
设置当前控制器返回值作为响应体, 写在类上,该类的所有方法都有该注解功能 |
相关属性 |
pattern:指定日期时间格式字符串 |
说明:
- 该注解可以写在类上或者方法上
- 写在类上就是该类下的所有方法都有@ReponseBody功能
- 当方法上有@ReponseBody注解后
- 方法的返回值为字符串,会将其作为文本内容直接响应给前端
- 方法的返回值为对象,会将对象转换成JSON响应给前端
此处又使用到了类型转换,内部还是通过Converter接口的实现类完成的,所以Converter除了前面所说的功能外,它还可以实现:
- 对象转Json数据(POJO -> json)
- 集合转Json数据(Collection -> json)
注解34:@PathVariable
名称 | @PathVariable |
类型 |
形参注解 |
位置 |
SpringMVC控制器方法形参定义前面 |
作用 |
绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应 |
关于接收参数,我们学过三个注解@RequestBody
、@RequestParam
、@PathVariable
,这三个注解之间的区别和应用分别是什么?
- 区别
- @RequestParam用于接收url地址传参或表单传参
- @RequestBody用于接收json数据
- @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
- 应用
- 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
- 如果发送非json格式数据,选用@RequestParam接收请求参数
- 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
注解35:@RestController
名称 | @RestController |
类型 |
类注解 |
位置 |
基于SpringMVC的RESTful开发控制器类定义上方 |
作用 |
设置当前控制器类为RESTful风格, 等同于@Controller与@ResponseBody两个注解组合功能 |
注解36:@GetMapping @PostMapping @PutMapping @DeleteMapping
名称 | @GetMapping @PostMapping @PutMapping @DeleteMapping |
类型 |
方法注解 |
位置 |
基于SpringMVC的RESTful开发控制器方法定义上方 |
作用 |
设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作, 例如@GetMapping对应GET请求 |
相关属性 |
value(默认):请求访问路径 |
注解37:@RestControllerAdvice
名称 | @RestControllerAdvice |
类型 |
类注解 |
位置 |
Rest风格开发的控制器增强类定义上方 |
作用 |
为Rest风格开发的控制器类做增强 |
**说明:**此注解自带@ResponseBody注解与@Component注解,具备对应的功能
注解38:@ExceptionHandler
名称 | @ExceptionHandler |
类型 |
方法注解 |
位置 |
专用于异常处理的控制器方法上方 |
作用 |
设置指定异常的处理方案,功能等同于控制器方法, 出现异常后终止原始控制器执行,并转入当前方法执行 |
**说明:**此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常
总结
熟能生巧。多写代码。