Springboot 注解运行原理和传值方式

Springboot 注解运行原理
参考链接

注解的本质就是一个继承了 Annotation 接口的接口

注解(Annotation)也被称为元数据(metadata),它是一种用于在代码中添加元数据、说明和标记的特殊语法。注解可以用来指示编译器进行额外的检查、生成代码等操作,也可以在运行时对代码进行解析和处理。 注解本质上就是一个接口,它继承自 Annotation 接口。该接口中定义了注解的属性(element),每个属性都有一个名称和类型。注解中的属性可以有默认值。注解使用 @interface 关键字来声明,类似于定义接口。 在使用注解时,需要通过注解处理器来解析和处理注解信息。Java 提供了一些标准的注解(如 @Override、@Deprecated、@SuppressWarnings 等),也允许用户自定义注解。

在 Spring Boot 中,注解起到了非常重要的作用,Spring Boot 通过注解来配置和管理应用程序中的各种组件和功能。以下是一些常见的 Spring Boot 注解:

 -  @SpringBootApplication:标记应用程序的主类,表示这是一个 Spring Boot 应用程序,并自动扫描包以配置 Spring 环境。 
 -  @RestController:将控制器类标记为 RESTful Web 服务的处理程序。
 -  @RequestMapping:将请求映射到处理程序方法上。
 -  @Autowired:将依赖项自动装配到使用它的类中。
 -  @ConfigurationProperties:将应用程序属性绑定到 POJO 类中。 

在Spring Boot中,注解传递的值方式

直接赋值:在注解上直接赋值即可,如:

    @Service("myService") 
    public class MyServiceImpl implements MyService { 
       // ... 
    }

使用表达式:使用Spring表达式语言(SpEL)可以在注解中使用表达式,如:

@Value("#{systemProperties['user.timezone']}") 
private String timezone; 

引用其他bean:可以在注解中引用其他bean,

 @Autowired 
 private SomeDependency dependency; 
 通过工厂方法传递:可以通过调用工厂方法的方式来传递值,如:
@Bean 
public SomeBean someBean() { 
  return new SomeBean(someValue); 
}

注解与反射的关系

注解是通过反射机制实现的。反射是指程序可以访问、检测和修改它本身状态或行为的一种能力。
下面以Springboot中的@Controller注解为例:

@Controller @RequestMapping("/hello") 
public class HelloController { 
	@GetMapping 
	public String hello() { 
		return "hello"; 
	} 
} 

上述代码中,

@Controller是一个注解,它告诉Spring框架这是一个控制器类。
@RequestMapping("/hello")表示将该控制器映射到/hello路径。
@GetMapping表示当请求方法为GET时,将调用hello()方法。

在Springboot启动时,它会扫描所有带有@Controller注解的类,并且使用反射机制来获取这些类的信息。
通过反射,Spring框架可以获取这些类的注解信息,包括注解的名称、内容等。
例如,可以通过以下代码获得HelloController类的@Controller注解:

 Class<HelloController> clazz = HelloController.class; 
 Annotation annotation = clazz.getAnnotation(Controller.class); 

注解本质上是一种特殊的接口类型,并且可以通过反射机制来处理它们。
因此,我们可以使用反射API来获取注解所包含的元数据信息,例如注解的值、属性等。
例如,通过以下代码可以获取@RequestMapping注解的值:

RequestMapping requestMapping = clazz.getAnnotation(RequestMapping.class); 
String value = requestMapping.value()[0];

总之,Springboot中注解和反射的关系可以简单地描述为:Springboot通过反射机制获取注解信息,从而实现了自动化配置和依赖注入

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值