目录
@Controller @service @Component @Repository
注解定义
注解(Annotation)是Java语言中的一种特殊语法结构,它可以在代码中嵌入元数据(metadata),用于一些特殊的标记和说明。注解可以在编译时被读取,并在运行时使用。
基本语法:
@注解名称(属性名1=属性值1, 属性名2=属性值2, ...)
其中,@符号表示这是一个注解,注解名称是一个标识符,类似于Java中的类名或接口名。注解名称后面的括号中可以包含零个或多个属性,属性的格式是属性名=属性值,多个属性之间用逗号分隔。
元数据
元数据(metadata)指的是描述数据的数据,是关于数据的信息。在Java语言中,元数据指的是描述Java程序中各种元素的信息,比如类、方法、变量等的信息。简单来说,元数据是用来描述程序中各种元素的信息的,而注解则是用来表示这些元数据的。 元注解(meta-annotation)是指用来注解其他注解的注解。Java语言中提供了4种元注解,分别是@Retention、@Target、@Inherited和@Documented。它们的作用如下:
@Retention:用于指定注解的保留策略。它有一个属性value,可以设置为RetentionPolicy.SOURCE、RetentionPolicy.CLASS或RetentionPolicy.RUNTIME,分别表示注解保留在源代码中、保留在class文件中或保留在运行时。
@Target:用于指定注解的作用目标。它有一个属性value,可以设置为ElementType.TYPE、ElementType.FIELD、ElementType.METHOD等,表示注解可以作用于类、字段、方法等不同的目标上。
@Inherited:用于指定注解是否可以被继承。如果一个注解被@Inherited注解,则它被用来注解的类的子类也会继承这个注解。
@Documented:用于指定注解是否包含在JavaDoc中。如果一个注解被@Documented注解,则它会被包含在JavaDoc中,方便开发者查看。
自定义注解
自定义注解是Java语言的一个重要特性,可以通过注解来标记代码,方便开发者在编写代码时进行一些特殊的处理。自定义注解可以让我们更好地标记代码,方便进行特定的处理。在使用注解时,需要注意注解的生命周期和应用场景,这样才能更好地发挥注解的作用。
- 创建注解
自定义注解需要使用关键字@interface来定义,@interface表示创建一个注解,MyAnnotation是注解的名称,可以在代码中使用该注解。例如:
public @interface MyAnnotation {
//注解属性定义
}
- 添加注解属性
注解属性可以理解为注解中的变量,用来存储特定的信息。MyAnnotation注解有两个属性,分别是name和age,分别存储一个字符串和一个整数值。例如:
public @interface MyAnnotation {
String name();
int age();
}
- 使用注解
自定义注解可以用来标记类、方法、变量等,@MyAnnotation表示把MyClass类标记为MyAnnotation注解,并设置注解属性的值。例如:
@MyAnnotation(name="张三",age=18)
public class MyClass {
//类定义
}
- 处理注解
使用注解后,我们可以通过反射机制来获取注解及其属性的值,使用反射机制获取MyClass类上的MyAnnotation注解,并获取其属性的值。例如:
MyAnnotation myAnnotation = MyClass.class.getAnnotation(MyAnnotation.class);
String name = myAnnotation.name();
int age = myAnnotation.age();
常用注解
@lombok
Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString 等方法,并可以自动化生成日志变量,简化java开发、提高效率。
@Controller @service @Component @Repository
Bean的声明,要把某个对象给IOC容器管理,需要在对应的类上加上如下注解之一:
声明bean的时候,可以通过value属性指定bean的名字,如果没有指定,默认为类名首字母小写。现在都是前后端分离,一般都不用@Controller注解,而是使用@RestController注解。@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直 接填入 HTTP 响应体中,是 REST 风格的控制器。@service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationcontext.xml文件定义bean了。
- 前面声明bean的四大注解,要想生效,还需要被组件扫描注解@ComponentScan扫描。
- @ComponentScan注解虽然没有显式配置,但是实际上已经包令在了启动类声明注解@SpringBootApplication 中,默认扫描的范围是启动类所在包及其子包。
@Autowired
@Autowired可以标注在构造器、方法、参数、字段以及派生注解上,所以注入时机非常多,可以准确的控制在何时、何处注入以及如何注入。
默认是按照类型进行,如果存在多个相同类型的bean,将会报错。
- @Resource 与@Autowired区别
- @Autowired是spring框架提供的注解,而@Resource是JDK提供的注解。
- @Autowired 默认是按照类型注入,而@Resource默认是按照名称注入。
@RequestMapping
是Spring框架中一个非常重要的注解,它用于将一个HTTP请求映射到一个特定的处理方法上。具体来说,@RequestMapping注解可以用于指定一个控制器(Controller)中的处理方法(Method)可以处理哪些HTTP请求(Request)以及如何处理这些请求。例如,可以使用@RequestMapping注解指定一个处理方法可以处理HTTP GET请求,或者指定一个处理方法需要一个特定的请求参数,或者指定一个处理方法需要一个特定的HTTP头部信息等等。@RequestMapping注解还可以用于指定处理方法所需的返回值类型(例如JSON或XML格式的数据),以及处理方法需要使用的HTTP协议的版本、请求方式、请求参数、请求头等等。在实际应用中,@RequestMapping注解经常和其他注解一起使用,如@ResponseBody注解用于指定返回值类型为JSON或XML格式的数据,@PathVariable注解用于获取请求URL中的参数值等。
原文链接:https://blog.csdn.net/weixin_45836130/article/details/127012985
@RequestBody
RequestBody注解是Spring框架中一个非常常用的注解,它用于将HTTP请求的内容(如JSON或XML格式的数据)绑定到一个Java对象中。具体来说,@RequestBody注解可以用于处理HTTP POST请求中的请求体(RequestBody),并将请求体中的数据绑定到一个Java对象中,从而方便开发人员进行数据处理和业务逻辑实现。使用@RequestBody注解的方法必须具有一个指定的Java类型作为参数,Spring框架会自动将HTTP请求中的数据转换为该Java类型的对象,并将该对象作为参数传递给方法。
@PathVariable
@PathVariable 映射 URL 绑定的占位符,通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过@PathVariable(“xxx”) 绑定到操作方法的入参中。
在Java Spring框架中,@RequestParam是一个用于处理HTTP请求参数的注解。它用于从请求中提取参数值并将其绑定到方法的参数上,以便在控制器方法中使用。
@RequestParam
@RequestParam和@PathVariable都能够完成类似的功能——因为本质上,它们都是用户的输入,只不过输入的部分不同,一个在URL路径部分,另一个在参数部分。要访问一篇博客文章,这两种URL设计都是可以的:
通过@PathVariable,例如/blogs/1
通过@RequestParam,例如blogs?blogId=1
那么究竟应该选择哪一种呢?建议:
1、当URL指向的是某一具体业务资源(或资源列表),例如博客,用户时,使用@PathVariable
2、当URL需要对资源或者资源列表进行过滤,筛选时,用@RequestParam
原文链接:https://blog.csdn.net/weixin_45836130/article/details/127012985
mybatisPlus中的常用注解
@TableName:用来指定表名
@Tableld:用来指定表中的主键字段信息
@TableField:用来指定表中的普通字段信息