gpt4 book ai didi

spring - Spring注解是如何工作的?

转载 作者:行者123 更新时间:2023-12-04 04:06:21 25 4
gpt4 key购买 nike

动机

作为我之前关于类加载的问题的后续行动

  • How is the Classloader for a class chosen?
  • How Classloader determines which classes it can load?
  • Where does bytecode injection happen?

  • 我很好奇注释在流行的 Spring 框架中是如何工作的。

    可能的解决方案

    据我了解,可能会使用两种机制:

    1. 类加载的字节码注入(inject)

    Spring 可以使用自己的类加载器来加载所需的类。在运行时,当类被加载并且 Spring 确定它有一些适当的注解时,它会注入(inject)字节码以向类添加额外的属性或行为。

    所以一个用 @Controller 注释的 Controller 当使用 @RequestMapping 注释时,可能会更改以扩展某些 Controller 基类,并且可能会更改函数以实现路由.
    @Controller
    public class HelloWorldController {

    @RequestMapping("/helloWorld")
    public String helloWorld(Model model) {
    model.addAttribute("message", "Hello World!");
    return "helloWorld";
    }
    }

    2. 用于实例化的反射
    @Autowired可以由 BeanFactory 在运行时通过反射读取,以处理实例化顺序并实例化配置的属性。
    public class Customer 
    {
    private Person person;

    @Autowired
    public void setPerson(Person person) {
    this.person = person;
    }
    }

    问题

    Spring 注解如何真正起作用?

    最佳答案

    Spring 是开源的,所以你不需要弄清楚它是如何工作的,看看里面:

  • RequestMapping注释由 RequestMappingHandlerMapping 处理,见 getMappingForMethod方法。
  • Autowiring 注释由 AutowiredAnnotationBeanPostProcessor 处理,见 processInjection方法。

  • 两者都使用反射来获取注释数据并在第一种情况下构建处理程序映射信息,或者在第二种情况下填充 bean。

    关于spring - Spring注解是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15268544/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com