spring注解学习笔记

目录

注解定义

元数据

自定义注解

常用注解

@lombok

@Controller @service @Component @Repository

@Autowired



注解定义

        注解(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:用来指定表中的普通字段信息

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring是一个开源的Java框架,用于构建企业级应用程序。它提供了一种轻量级的、非侵入式的开发方式,通过依赖注入和面向切面编程等特性,简化了Java应用程序的开发过程。 以下是关于Spring学习的一些笔记: 1. IoC(控制反转):Spring通过IoC容器管理对象的创建和依赖关系的注入。通过配置文件或注解,将对象的创建和依赖关系的维护交给Spring容器来管理,降低了组件之间的耦合度。 2. DI(依赖注入):Spring通过依赖注入将对象之间的依赖关系解耦。通过构造函数、Setter方法或注解,将依赖的对象注入到目标对象中,使得对象之间的关系更加灵活和可维护。 3. AOP(面向切面编程):Spring提供了AOP的支持,可以将与业务逻辑无关的横切关注点(如日志、事务管理等)从业务逻辑中分离出来,提高了代码的可重用性和可维护性。 4. MVC(模型-视图-控制器):Spring提供了一个MVC框架,用于构建Web应用程序。通过DispatcherServlet、Controller、ViewResolver等组件,实现了请求的分发和处理,将业务逻辑和视图展示进行了分离。 5. JDBC和ORM支持:Spring提供了对JDBC和ORM框架(如Hibernate、MyBatis)的集成支持,简化了数据库访问的操作,提高了开发效率。 6. 事务管理:Spring提供了对事务的支持,通过声明式事务管理和编程式事务管理,实现了对数据库事务的控制和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值