什么是注解?干什么用的?怎么使用?
注解,是一种用来描述数据的数据。
比如说@override 表示我们重载父类函数 如果我们不用这个注解 程序也能执行。但是我们加了这个注解 代表我告诉编译器这个方法 是一个重写的方法。如果父类中不存在该方法 就会报错(也能避免自己写的时候的typo)----就是说我们用注解 就是为了告诉JVM我们这个是干什么的 从而提高代码可读性和程序健壮性。(注解本身不含逻辑 他就是一个声明 来说明这个被注释的地方 含有某种特定的 逻辑)
注解可用在类 方法 参数 变量 构造器 声明特殊修饰符等等等等。
在spring中的bean有什么含义呢?
之前 没有注解以前 如果我们要声明一个bean 只能通过XML配置的方式。(写入XML文件中)
<bean id="demoService" class="com.chenshuyi.DemoService"/>
但是 有了注解 我们可以直接写在代码上
@Service
public class DemoService{
}
好处是啥?代码少了,不用分离了(因为像这种注解 是和代码联系非常紧密的 因此离代码块近一点比较好 如果没有那么紧密的 单独放一个XML文件也还行(比如说那种配hi全局变量))
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
…