java学习注解相关知识-文字描述(学习笔记)

一、Springboot相关注解

1.前后端交互相关注解

1.Controller

作用范围:类
表明这个类是一个Controller类,用于将一个类标识为控制器。在MVC(模型-视图-控制器)架构中,控制器负责处理用户的请求,调用相应的模型(业务逻辑)和视图(数据显示),并返回响应给用户。在Web应用程序中,这意味着控制器会接收HTTP请求,并根据请求的内容决定调用哪些服务或数据访问代码,以及最终渲染哪个页面或响应给用户。

具体来说,使用@Controller注解的类通常会包含一个或多个方法,这些方法映射到特定的URL路径上。当用户访问这些路径时,对应的方法会被执行。这些方法可以进一步与@RequestMapping或其他相关注解结合使用,以指定具体的请求类型(如GET、POST等)和路径变量。


1.1@RestController

作用范围:类
@RestController是一个方便的注解,用于创建RESTful Web服务的控制器类

@RestController是Spring框架中的一个注解,它结合了@Controller和@ResponseBody的功能,用于简化RESTful Web服务的开发。具体来说,@RestController有以下几个特点:

  • 自动序列化返回值:使用@RestController注解的类中的方法返回的对象会自动被序列化为JSON格式,并作为HTTP响应的内容返回给客户端。这意味着开发者不需要在每个方法上添加@ResponseBody注解来指定返回JSON数据。
  • 支持HTTP请求处理方法:与其他控制器注解一样,@RestController标记的类可以包含处理HTTP请求的方法,这些方法可以通过不同的请求映射注解(如@GetMapping、@PostMapping等)来处理不同类型的HTTP请求。
  • 组件扫描:@RestController也是一个构造型注解,它允许Spring的组件扫描功能发现并注册这个类为一个Bean,使其成为Spring应用程序上下文的一部分。

与@Controller相比,@RestController更适合用于构建API接口,因为它默认所有的方法都是返回数据而不是视图名称。而@Controller通常用于返回视图名称,需要配合@ResponseBody使用才能返回数据。

总结来说,@RestController是Spring MVC中用于快速开发RESTful API的注解,它通过简化配置和自动处理JSON数据的返回,使得开发Web服务变得更加高效。


2.@RequestMapping(“/hello”)

作用方式:类,方法
在Spring MVC框架中,@RequestMapping注解扮演着至关重要的角色,它定义了Web请求如何映射到具体的处理器方法上。@RequestMapping是Spring MVC中用于定义请求映射的核心注解,它通过指定请求的路径、方法和参数等信息,将HTTP请求正确地路由到相应的处理逻辑。

  • 作用域:@RequestMapping可以应用在类级别和方法级别。在类级别上使用时,它定义了该类中所有处理方法的基本路径(父路径)。而在方法级别上使用时,它定义了特定方法的具体路径。
  • 属性:@RequestMapping注解包含多个属性,其中最常用的是value和method。value属性用于指定请求的实际地址,而method属性用于指定请求的HTTP方法类型(如GET、POST等)。
  • 路径变量:在使用@RequestMapping时,可以通过路径变量来捕获URL中的一部分作为参数传递给方法。这通常是通过在路径中使用花括号{}来实现的。
  • 正则表达式:还可以使用正则表达式来定义请求路径,这样可以提供更灵活的匹配规则。
  • 占位符:在定义路径时,可以使用占位符来表示路径中的动态部分,这些占位符可以在运行时被实际的值替换。
  • 配置要求:为了使@RequestMapping注解生效,需要在Spring配置文件中进行相应的配置,例如启用注解驱动的配置项<mvc:annotation-driven/>
  • 版本变化:随着Spring框架的发展,特别是在Spring 4.3之后,引入了一些新的方法级别的注解,如@GetMapping、@PostMapping等,这些注解简化了@RequestMapping的使用,使其更加简洁易读。
@Controller
public class MyController {

    @RequestMapping("/hello")
    public String helloWorld() {
        return "hello"; // 这里的"hello"通常对应于一个名为"hello.jsp"的视图页面
    }
}

3.@RequestParam(name = “username”)

作用方式:参数

@RequestParam注解的主要作用是将HTTP请求中的参数映射到控制器方法的参数上。这样,当一个HTTP请求到达时,Spring MVC可以根据@RequestParam注解的指示,将请求中相应的参数值传递给方法的参数。以下是@RequestParam注解的一些关键属性和用法:

  • value/name:这是@RequestParam注解的必需属性,用于指定请求参数的名称。方法参数上的@RequestParam注解的值必须与请求中的实际参数名称相匹配。name属性和value属性没有区别,它们是等价的,都用于指定请求参数的名称。
    这两种写法在功能上是完全相同的。在早期的Spring版本中,通常使用value属性来指定参数名称。自Spring 4.2之后,为了更清晰地表达参数的来源(即请求参数),推荐使用name属性。然而,由于它们是别名关系,即使在一个方法中使用了name和value属性,也不会产生冲突或错误,只要它们的值是一致的。但是,为了避免混淆,建议只选择其中一个属性来使用,并且在项目中保持一致性。
  • required:这个属性用于指定请求参数是否是必需的。默认情况下,required设置为true,意味着如果请求中没有包含指定的参数,将会抛出异常。如果设置为false,即使请求中缺少该参数,也不会抛出异常。
  • defaultValue:这个属性允许你为参数提供一个默认值。如果请求中没有提供该参数,或者提供了但值为空字符串,那么就会使用这个默认值。
  • multiple:当需要接收多个相同名称的参数时,可以使用这个属性。例如,如果你的请求中有一个名为"ids"的参数,并且可能有多个值,你可以在方法参数上使用List或数组类型,并加上@RequestParam注解来接收这些值。

@RequestParam通常与GET请求一起使用,但也可用于处理POST请求中的表单数据。它与@PathVariable注解不同,后者用于从URL路径中提取变量,而@RequestParam则是从查询字符串或表单数据中提取参数。

在实际开发中,@RequestParam注解可以帮助你方便地获取客户端发送的数据,无论是查询参数、表单提交的数据还是多个参数值。这使得数据处理变得更加灵活和方便,是Spring MVC中处理HTTP请求不可或缺的一部分。


4.@DateTimeFormat( pattern=“yyyy-MM-dd HH:mm:ss” )

作用方式:参数
@DateTimeFormat( pattern="yyyy-MM-dd HH:mm:ss" )是一个Java注解,用于指定日期时间的格式。它通常用于Spring框架中的控制器方法参数或模型属性上,以控制日期时间的显示和解析方式。

在Spring MVC中,@DateTimeFormat注解可以应用于控制器方法的参数或模型属性上,用于定义日期时间字段的格式化样式。通过设置pattern属性,可以指定日期时间的格式模式,例如"yyyy-MM-dd HH:mm:ss"表示年-月-日 时:分:秒的格式。

下面是一个示例代码片段,展示了如何在控制器方法中使用@DateTimeFormat注解:

import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
public class MyController {

    @PostMapping("/save")
    public String saveData(@RequestBody @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") Date date) {
        // 处理保存数据的逻辑
        return "Data saved successfully!";
    }
}

在上面的例子中,@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")注解应用于saveData方法的参数date上。这表示当客户端发送一个包含日期时间数据的请求时,Spring MVC将使用指定的模式(“yyyy-MM-dd HH:mm:ss”)来解析日期时间的值。
需要注意的是,@DateTimeFormat注解还可以应用于模型属性上,以便在视图中正确地显示日期时间数据。

总结起来,@DateTimeFormat( pattern="yyyy-MM-dd HH:mm:ss" )注解用于指定日期时间的格式,以便在Spring MVC中正确地显示和解析日期时间数据。


5.@RequestBody

作用方式:参数
@RequestBody是Spring框架中的一个注解,主要用于接收来自前端的JSON或XML格式的数据,通常用于处理HTTP POST请求中的请求体数据

在Web开发中,当客户端向服务器发送请求时,可以通过GET方法将参数附加到URL上,或者通过POST方法将数据放在请求体中。@RequestBody注解通常与POST请求一起使用,因为GET请求没有请求体。这个注解告诉Spring框架,方法参数是一个对象,该对象应该从请求体中反序列化得到。这样,客户端可以发送一个包含复杂数据的请求,服务器端可以将这些数据自动映射到Java对象中。

例如,如果客户端发送一个包含用户信息的JSON字符串,服务器端的控制器方法可能会这样定义:

@PostMapping("/users")
public User createUser(@RequestBody User user) {
    // ... 保存用户信息到数据库等操作
    return user;
}

在上面的例子中,@RequestBody注解用于createUser方法的参数user上。这表示当客户端发起一个POST请求到/users路径时,请求体中的JSON数据将被自动转换为User对象,然后传递给createUser方法。

总结来说,@RequestBody是Spring MVC中用于处理HTTP请求体数据的重要注解,它使得从请求中获取和处理复杂数据变得简单方便。


6.@PathVariable

作用方式:参数
在Spring MVC中,@PathVariable是一个用于处理请求URI映射中的模板变量的注解,并将其绑定到Controller方法参数上。它的主要作用是将URL中的路径参数(Path parameters)映射到方法的参数上,以便在方法体内部使用这些参数值。通常与@RequestMapping或@GetMapping等注解一起使用,用于定义RESTful API的端点。

以下是@PathVariable的一些典型用法:

  • 标识具有ID的实体的端点:例如,如果你想通过一个唯一的ID来获取用户的信息,你可以在URL中设置一个占位符,并使用@PathVariable将该占位符的值传递给方法参数。这样,你就可以在方法内部根据这个ID来查找用户信息。
  • 自定义变量名:你可以在@PathVariable注解中指定一个名称,这个名称必须与URL中的占位符名称相匹配。这样,你就可以在方法参数中使用这个指定的名称来接收对应的值。

需要注意的是,@PathVariable通常用于处理GET请求中的路径参数,而不是POST请求中的请求体数据。对于POST请求中的请求体数据,应使用@RequestBody注解来处理。

总结来说,@PathVariable是Spring MVC中用于处理URL路径参数的一个重要注解,它使得从URL中提取参数并在Controller方法中使用这些参数变得简单方便。


7.@ResponesBody

作用方式:类,方法
@ResponseBody是Spring框架中的一个注解,用于指示方法的返回值应该被绑定到HTTP响应体,并自动转换为适合在Web上传输的格式,通常是JSON或XML。

具体来说,@ResponseBody注解的作用是将Controller方法的返回值作为HTTP响应的内容发送给客户端,而不是将其解释为视图名称。这在构建RESTful Web服务时非常有用,因为RESTful服务通常需要返回数据而不是渲染视图。

以下是@ResponseBody的一些典型用法:

  • 返回简单对象:如果方法返回一个对象,例如UserList<User>等,@ResponseBody会将该对象序列化为JSON或XML格式,并将其写入HTTP响应体中。
  • 返回自定义视图:在某些情况下,你可能希望返回自定义的视图或数据结构。通过使用@ResponseBody,你可以返回任何类型的对象,并将其转换为适合在Web上传输的格式。
  • 与@RestController配合使用:在大多数情况下,你不需要显式地使用@ResponseBody,因为@RestController注解已经隐式地包含了它。这意味着如果你使用@RestController注解标记类,那么类中的方法默认都会将返回值绑定到HTTP响应体。

总结来说,@ResponseBody是Spring MVC中用于处理HTTP响应体的注解,它使得从Controller方法返回的数据能够直接作为HTTP响应的内容发送给客户端,而无需经过视图解析器。


8.@Component

作用方式:类
@Component是Spring框架中的一个注解,用于自动检测和配置应用程序中的Bean

@Component是一个类级别的注解,它告诉Spring容器,标记的类应该被视为一个Bean,由Spring容器进行管理。当Spring启动时,它会扫描使用了@Component注解的类,并自动进行实例化和依赖注入。这样,你就可以在其他需要的地方使用@Autowired注解来注入这些Bean,而无需手动配置XML文件。

此外,@Component注解是Spring框架中一系列特殊注解的基础,包括@Service@Repository@Controller等。这些注解都是@Component的衍生注解,它们提供了更具体的语义,帮助开发者区分不同类型的Bean。例如,@Service通常用于服务层组件,@Repository用于数据访问层组件,而@Controller用于Web层的控制器组件。

总结来说,@Component注解是Spring框架中实现自动装配和依赖注入的关键,它使得Bean的管理更加便捷和灵活。在实际开发中,根据组件的职责和作用范围,选择使用@Component或其衍生注解可以更好地组织和管理代码。


9.@Autowired

作用方式:属性
@Autowired是Spring框架中的一个注解,用于实现依赖注入(DI),即自动将Bean装配到需要它们的地方。

具体来说,@Autowired注解可以应用在类的成员变量、方法以及构造函数上,它指示Spring容器在创建Bean时自动将其依赖的其他Bean注入到标注的位置。这样做的好处是减少了手动配置Bean之间的依赖关系,使得代码更加简洁和易于维护。

@Autowired注解默认是按照类型进行自动装配的,这意味着Spring会查找容器中与标注位置类型相匹配的Bean并注入。如果容器中存在多个相同类型的Bean,而你希望按名称进行装配,那么可以配合@Qualifier注解来指定具体的Bean名称。

总结来说,@Autowired是Spring框架中实现自动化依赖注入的关键注解,它通过标注需要依赖注入的位置,让Spring自动完成Bean的装配工作,从而简化了Bean之间的依赖管理。在实际开发中,合理使用@Autowired可以提高代码的可读性和可维护性。


10.@Primary

作用方式:类
@Primary是Spring框架中用于指定首选Bean的注解

在Spring容器中,如果存在多个相同类型的Bean,使用@Primary注解可以明确指定哪个Bean应该被优先注入。这个注解可以应用在类级别或者方法级别,确保在自动装配时,Spring会优先考虑被标记为@Primary的Bean。

具体来说,@Primary的作用包括:

  • 解决歧义性:当有多个Bean实现了相同的接口或者继承了相同的抽象类时,使用@Primary可以避免自动装配时的歧义性,让Spring知道应该选择哪个Bean进行注入。
  • 指定默认Bean:在某些情况下,你可能希望即使存在多个相同类型的Bean,也总是使用同一个Bean。这时,@Primary注解可以帮助你指定一个默认的Bean。
  • 优化依赖注入:通过使用@Primary,你可以更精确地控制Spring容器中的依赖注入过程,确保特定的依赖关系更加清晰和可靠。

总的来说,@Primary注解是Spring框架中一个重要的工具,它帮助开发者在存在多个相同类型Bean时,明确指定首选的Bean,从而优化自动装配的过程。


11.@Quallifier(“exampleBean”)

作用方式:属性
@Qualifier是Spring框架中的一个注解,用于在自动装配时指定具体需要注入的Bean

@Qualifier注解主要解决的是当Spring容器中存在多个相同类型的Bean时,如何精确地指定哪一个Bean应该被注入的问题。@Autowired注解配合使用时@Qualifier可以确保正确选择Bean,避免因多个相同类型的Bean而导致的歧义性问题。

以下是@Qualifier的一些典型用法:

  • 按名称装配:当使用@Autowired进行自动装配时,如果存在多个相同类型的Bean,可以使用@Qualifier注解并指定Bean的名称,来告诉Spring容器注入特定名称的Bean。
  • 细粒度控制@Qualifier不仅能够根据Bean的名称进行装配,还可以结合其他自定义注解,实现更细粒度的控制,如根据特定的属性或条件来选择Bean。
  • 区分相同类型的Bean:在某些情况下,你可能需要在同一容器中维护多个相同类型的Bean,这时@Qualifier可以帮助你区分它们,确保正确的Bean被注入到目标位置。

总结来说,@Qualifier是Spring框架中一个非常有用的注解,它提供了一种机制来明确指定在自动装配时的Bean选择,使得开发者能够更好地管理和维护Spring容器中的Bean。


12.@Resource

作用方式:属性
@Resource是Java平台提供的一个注解,用于依赖注入

@Resource注解与@Autowired注解类似,它们都用于在Spring框架中实现依赖注入。不过,它们之间存在一些差异:

  • 来源不同@Resource注解来源于J2EE,是JDK1.6及以上版本支持的注解。而@Autowired是Spring框架提供的注解。
  • 注入方式不同@Resource默认的注入方式是ByName,即通过Bean的名称进行匹配和注入。而@Autowired默认的注入方式是ByType,即根据类型进行匹配和注入。
  • 注解来源不同@Resource需要导入的包是javax.annotation.Resource,而@Autowired则来自org.springframework.beans.factory.annotation.Autowired包。
  • 使用场景不同@Resource在使用时,如果指定了name属性,则会优先按名称装配;如果没有指定name属性,则会按byName的方式进行装配。而@Autowired则是尝试通过类型来装配合适的组件。

总结来说,@Resource是一个用于依赖注入的注解,它主要基于名称来进行Bean的装配,而@Autowired则主要基于类型。在实际开发中,选择使用哪个注解取决于具体的装配需求和个人或团队的开发习惯。


二、MyBatis相关注解

1.MyBatis数据操作相关注解知识

1.@Insert()

作用方式:方法

示例:@Insert(“insert into user(username,name,sex,age)”+“values(#{username},#{name},#{sex},#{age})”)

@Insert()MyBatis框架中的一个注解,用于标记一个方法或接口方法作为插入操作的映射器(Mapper)方法

当在MyBatis的映射器(Mapper)接口或XML配置文件中使用@Insert()注解时,它通常与@Options()注解一起使用。@Insert()注解的主要作用包括:

  1. 指定SQL语句:通过设置value参数,可以指定要执行的SQL插入语句。这个SQL语句可以是简单的插入语句,也可以包含动态生成的部分,例如使用#{}占位符来表示要插入的数据。
  2. 返回值类型:通过设置resultType参数,可以指定插入操作后返回的结果类型。这可以是一个简单的数据类型,如intboolean等,也可以是一个复杂的实体类类型。
  3. 处理主键生成和返回@Insert()注解可以与@Options()注解一起使用,以处理插入操作后的主键生成和返回。通过设置useGeneratedKeys = true参数,MyBatis会在执行插入操作后从数据库中获取自动生成的主键值,并将其赋给指定的属性。

总的来说,@Insert()注解在MyBatis中用于定义插入操作的映射器方法,并指定相关的SQL语句和返回值类型。通过合理使用这个注解,可以简化代码并提高数据库操作的效率。


2.@Options(keyProperty = “id”,useGeneratedKeys = true)

作用方式:方法
@Options()MyBatis框架中的一个注解,主要用于处理插入操作后的主键生成和返回

当在MyBatis的映射器(Mapper)接口或XML配置文件中使用@Options()注解时,它通常与@Insert注解一起使用。@Options()注解的主要作用包括:

  1. 自动获取数据库生成的主键值:通过设置useGeneratedKeys = true参数,MyBatis会在执行插入操作后从数据库中获取自动生成的主键值。
  2. 指定主键属性:通过keyProperty参数,可以指定将主键值赋给实体类的哪个属性。例如,如果实体类有一个名为id的属性,那么可以设置keyProperty = "id",MyBatis会将主键值赋给这个属性。
  3. 指定主键列名:如果在数据库中的主键列名不是默认的id,可以通过keyColumn参数来指定正确的列名。例如,如果主键列名为instance_id,则可以设置keyColumn = "instance_id",以确保MyBatis能正确找到并获取主键值。

总的来说,@Options()注解在MyBatis中用于控制插入操作的细节,特别是关于如何处理自动生成的主键。通过合理使用这个注解,可以简化代码并提高数据库操作的效率。


3.@Updata()

作用方式:方法
@Update()MyBatis框架中的一个注解,用于标记一个方法或接口方法作为更新操作的映射器(Mapper)方法

当在MyBatis的映射器(Mapper)接口或XML配置文件中使用@Update()注解时,它通常与@Options()注解一起使用。@Update()注解的主要作用包括:

  1. 指定SQL语句:通过设置value参数,可以指定要执行的SQL更新语句。这个SQL语句可以是简单的更新语句,也可以包含动态生成的部分,例如使用#{}占位符来表示要更新的数据。
  2. 返回值类型:通过设置resultType参数,可以指定更新操作后返回的结果类型。这可以是一个简单的数据类型,如intboolean等,也可以是一个复杂的实体类类型。
  3. 处理主键生成和返回@Update()注解可以与@Options()注解一起使用,以处理更新操作后的主键生成和返回。通过设置useGeneratedKeys = true参数,MyBatis会在执行更新操作后从数据库中获取自动生成的主键值,并将其赋给指定的属性。

总的来说,@Update()注解在MyBatis中用于定义更新操作的映射器方法,并指定相关的SQL语句和返回值类型。通过合理使用这个注解,可以简化代码并提高数据库操作的效率。


有时间继续更新~

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用注解实现Elastic-Job定时任务可以让任务配置更加简洁和灵活,以下是一个简单的示例代码: 1. 引入Elastic-Job依赖 ```xml <dependency> <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-spring</artifactId> <version>2.1.5</version> </dependency> ``` 2. 定义任务实现类 ```java @JobHandler(value = "myJob") @Component public class MyJob implements SimpleJob { @Override public void execute(ShardingContext shardingContext) { System.out.println("分片项:" + shardingContext.getShardingItem() + ",总分片数:" + shardingContext.getShardingTotalCount()); // TODO: 执行具体的任务逻辑 } } ``` 在上面的示例中,我们使用@JobHandler注解定义了任务名称,并将任务实现类MyJob标记为Spring组件。 3. 配置任务 ```java @Configuration public class JobConfig { @Autowired private ZookeeperRegistryCenter registryCenter; @Bean(initMethod = "init") public JobScheduler simpleJobScheduler(final MyJob myJob, @Value("${myJob.cron}") final String cron, @Value("${myJob.shardingTotalCount}") final int shardingTotalCount, @Value("${myJob.shardingItemParameters}") final String shardingItemParameters) { return new SpringJobScheduler(myJob, registryCenter, getLiteJobConfiguration(myJob.getClass(), cron, shardingTotalCount, shardingItemParameters)); } private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters) { return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder( jobClass.getName(), cron, shardingTotalCount) .shardingItemParameters(shardingItemParameters) .build(), jobClass.getCanonicalName())).overwrite(true).build(); } } ``` 在上面的示例中,我们使用@Configuration注解定义了任务配置类,并注入了ZookeeperRegistryCenter对象。然后定义了simpleJobScheduler方法,使用@Bean注解标记为Spring组件,并将MyJob实例和任务配置信息作为参数传入。 在getLiteJobConfiguration方法中,我们使用JobCoreConfiguration和SimpleJobConfiguration两个类实现任务的基本配置,然后使用LiteJobConfiguration进行总配置,并使用overwrite方法将原有任务配置覆盖。最后,在simpleJobScheduler方法中,使用SpringJobScheduler类启动任务。 4. 配置文件 在配置文件中,我们可以指定任务的cron表达式、分片数量和分片项参数等信息,例如: ```properties myJob.cron=0/5 * * * * ? myJob.shardingTotalCount=3 myJob.shardingItemParameters=0=A,1=B,2=C ``` 这样,就可以使用Java注解实现Elastic-Job定时任务功能,让任务配置更加简单和灵活。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玻璃瓶和纸飞机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值