注解 小巧,方便,本意是便于开发。
但注解缺比较繁多,功能复杂,个数多,学多了以后就比较会容易忘记。这篇的目的就是复习一下SSM框架中之前用到的所有注解
MyBatis篇
首先就是用于Mapper接口中的4个CRUD注解和@Param注解
@Select 注解 同 @Insert @Update @Delete
在Mapper接口中,加在声明的方法上,并接上sql语句。
@Select("select * from user where id = #{id}")
User getUserByID(@Param("id") int id);
@Param注解用于给方法参数起一个名字。
- 在方法只接受一个参数的情况下,可以不使用@Param。
- 不使用@Param注解时,参数只能有一个,并且是Javabean。
不过,增删改查的四大注解只能够处理简单的业务。
在规范的约束下,更多的会使用xml配置
Spring 篇
在使用Spring注解开发之前,需要在Spring配置文件中开启属性注解支持!
<context:annotation-config/>
以及扫描包,使包下的注解生效!
<context:component-scan base-package="com.kuang.pojo"/>
@Autowired
直接用在属性上,或者set方法上
需要导入spring-aop的包!
先按byName的模式寻找(找与set方法后半段名字相同的id),如果找不到,再使用byType寻找(class对应的类型要唯一)。
如果不唯一则可启用@Qualifier注解
@Qualifier(value=“在配置文件中其二的id”)
@Qualifier与@Autowired 需要成对出现
@Autowired(required=false) 说明:false,对象可以为null;true,对象必须存对象,不能为null。
@Resource
直接用在属性上,或者set方法上
@Resource(name=“xxx”) 如果像这样有指定的name属性,就先按该属性进行byName模式的装配
再次进行默认的byName方式进行装配
如果都不行,再按照byType的方式自动装配
@Nullable
@Component
作用于类上方,等价于在spring配置文件中的标签
@Component有几个衍生注解,在web开发中,会按照mvc三层架构分层
这四个注解功能相同,都代表将某个类注册到Spring容器中,装配bean
@Value注解
@Scope
在SpringBoot中,使用纯Java的方式配置spring的方式比较常见,下面是关于这个的注解
@Configuration
@ComponentScan
扫描包下的注解,使之生效
@ComponentScan("com.kuang.pojo")
@Import
@Bean
@Bean
public Dog dog(){
return new Dog();
}
注解实现AOP
@Aspect
@Before @After @Around
代表切入点
@Before("execution(* com.kuang.service.UserServiceImpl.*(..))")
SpringMVC篇
多数情况下SpringMVC是最喜爱注解的。
SpringMVC也是属于Spring的一部分,因此也需要扫描包,使包下的注解生效
<context:component-scan base-package="com.kuang.controller"/>
同时需要mvc注解驱动
<mvc:annotation-driven />
在spring中一般采用@RequestMapping注解来完成映射关系
要想使@RequestMapping注解生效
必须向上下文中注册DefaultAnnotationHandlerMapping
和一个AnnotationMethodHandlerAdapter实例
这两个实例分别在类级别和方法级别处理。
而annotation-driven配置帮助我们自动完成上述两个实例的注入
|
| |
@Controller
@RequestMapping
作用在类上或者方法上,映射请求路径
实际的请求路径就是类上的@RequestMapping再加上方法上的@RequestMapping
还有其衍生注解,@GetMapping,@PostMapping
@RequestMapping(method = RequestMethod.POST)
@PathVaribale
更详细可以戳这里
@RequestParam
@RestController
类下所有的方法都不会走视图解析器,而是返回一个字符串
@ResponseBody,注解的方法不会走视图解析器,而是返回一个字符串
目前用过的就这么多了,随着经验增加还会用到其他注解,不定期更新!