springboot自定义注解例子
时间: 2023-11-07 15:03:50 浏览: 164
SpringBoot提供了很多方便的方式来自定义注解。一个例子是通过使用Spring AOP和Java反射来实现自定义注解校验参数。在源码中,可以在DemoController类中找到使用该注解的示例。
示例代码如下:
```java
@RestController
public class DemoController {
@GetMapping("/hello")
@CheckParams(notNull = true)
public String sayHello(@RequestParam("name") String name) {
return "Hello, " + name + "!";
}
}
```
在上述代码中,我们给`sayHello`方法添加了一个自定义注解`@CheckParams`,并将`notNull`属性设置为`true`,表示`name`参数不能为空。当请求`/hello`接口时,如果请求参数`name`为空,则会抛出异常。
相关问题
springBoot自定义注解及其处理器
Spring Boot 自定义注解通常用于提供额外的功能或者业务规则,它们允许开发者在代码中添加特定于应用的元数据。自定义注解处理器(Annotation Processor)是一种特殊类型的 Java 编译器插件,它会在编译期间扫描并处理包含自定义注解的源代码。
创建 Spring Boot 的自定义注解,首先你需要定义注解的结构,比如@MyCustomAnnotation,然后可以在其中设置属性值。例如:
```java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyCustomAnnotation {
String value() default "";
}
```
接下来,为了使注解处理器生效,需要创建一个实现了`javax.annotation.processing.Processor`接口的类,并在其中实现`process()`方法,这个方法会接收包含自定义注解的源文件列表作为输入:
```java
@Component
public class MyCustomAnnotationProcessor implements javax.annotation.processing.Processor {
// ... 实现 process() 方法
}
```
为了让IDE(如IntelliJ IDEA或Eclipse)能够识别并启用你的注解处理器,你需要在项目的`META-INF/services/javax.annotation.processing.Processor`文件中列出你的处理器全限定名。
当你在代码中使用自定义注解,编译时处理器会被自动调用,它可以生成字节码、修改元数据等。举个例子,处理器可能会检查标注了`@MyCustomAnnotation`的类是否满足某些条件,如果不符合则抛出错误或者生成警告。
springboot 使用自定义注解,使用例子
以下是一个使用自定义注解的 Spring Boot 示例:
首先,定义一个自定义注解 `CustomAnnotation`:
```
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
String value() default "";
}
```
接下来,在 Spring Boot 的控制器中使用自定义注解 `CustomAnnotation`:
```
@RestController
@RequestMapping("/example")
public class ExampleController {
@CustomAnnotation("myAnnotation")
@GetMapping("/test")
public String test() {
return "Hello, world!";
}
}
```
最后,通过反射获取自定义注解 `CustomAnnotation` 的值:
```
@RestControllerAdvice
public class CustomAdvice {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception ex, HandlerMethod handlerMethod) throws Exception {
CustomAnnotation customAnnotation = handlerMethod.getMethodAnnotation(CustomAnnotation.class);
if (customAnnotation != null) {
String annotationValue = customAnnotation.value();
// 处理自定义注解逻辑
}
// 处理异常逻辑
}
}
```
在上面的示例中,当 `ExampleController` 中的 `test()` 方法抛出异常时,会调用 `CustomAdvice` 中的 `handleException()` 方法。通过反射获取 `test()` 方法上的自定义注解 `CustomAnnotation` 的值,并进行处理。
阅读全文