1.注解介绍
注解,是一种用来描述数据的数据。
比如说@override表示我们重载父类函数。如果我们不用这个注解,程序也能执行,但是我们加了这个注解代表我告诉编译器这个方法是一个重写的方法。如果父类中不存在该方法 就会报错(也能避免自己写的时候的typo)----就是说我们用注解,就是为了告诉JVM我们这个是干什么的,从而提高代码可读性和程序健壮性。(注解本身不含逻辑,他就是一个声明,来说明这个被注释的地方,含有某种特定的逻辑)
注解可用在类方法参数变量构造器,声明特殊修饰符等等。
在spring中的bean有什么含义呢?
之前没有注解以前如果我们要声明一个bean 只能通过XML配置的方式。(写入XML文件中)
但是有了注解,我们可以直接写在代码上。好处是啥?代码少了,不用分离了(因为像这种注解是和代码联系非常紧密的,因此离代码块近一点比较好。如果没有那么紧密的,单独放一个XML文件也还行(比如说那种配hi全局变量))
2.Spring中常见的注解
@Autowired:此注解用于构造方法、字段、setter方法和注解类型。显示声明依赖,根据type来autowiring, 默认注入是必须的。(这个注解会为我们注入一个定义好的Bean)
@Qualifier():此注解是和@Autowired一起使用的。使用此注解可以让你对注入的过程有更多的控制,用@Qulifier指定要绑定的bean的名称。当一个type有多个bean时,使用@Autowired的时候需要配合上@Qulifier才能正常。
@Scope()
@bean
@Configuration: 指定Spring扫描注解的package。如果没有指定包,那么默认会扫描此配置类所在的package。
Stereotype注解:(Component-Controller-Service-Repository)
@Component: 此注解使用在class上来声明一个Spring组件(Bean), 将其加入到应用上下文中。
@Controller: 此注解使用在class上声明此类是一个Spring controller,是@Component注解的一种具体形式。
@Service: 此注解使用在class上,声明此类是一个服务类,执行业务逻辑、计算、调用内部api等。是@Component注解的一种具体形式。
@Repository:此类使用在class上声明此类用于访问数据库,一般作为DAO的角色。
此注解有自动翻译的特性,例如:当此种component抛出了一个异常,那么会有一个handler来处理此异常,无需使用try-catch块。
Spring MVC 和 REST:
@Controller
@RequestMapping: 可以用在class和method上,用来映射web请求到某一个handler类或者handler方法上。当此注解用在Class上时,就创造了一个基础url,其所有的方法上的@RequestMapping都是在此url之上的。可以使用其method属性来限制请求匹配的http method。
后面我们引入了一系列的变种:
@GetMapping
@PostMapping
@PutMapping
@PatchMapping
@DeleteMapping
@PathVariable:
RequestMapping("/users/{uid}")
public String execute(@PathVariable("uid") String uid)
{
}
一大堆用在Http handler方法的参数上面相关的annotation:
@requestAtribute
@requestBody
@RequestHeader
@RequestParam
@RequestBody
@RequestStatus
3.springboot项目中注解使用实例
登录接口代码如下:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Login {
}
注解使用比较简单,注解一般都有对应的说明。注解本身不含任何逻辑,但可以简化代码的开发,这也是spring一组的特性之一。开发时使用注解,就不用再写复杂的配置文件,大大减轻了工作量。