ipa*_*lic 9 spring annotations classloader spring-ioc
作为我之前关于类加载的问题的后续跟进
我很好奇注释如何在流行的Spring框架中工作.
据我了解,可能会使用两种机制:
1.字节码上的字节码注入
Spring可以使用自己的类加载器来加载所需的类.在运行时,当加载类并且Spring确定它具有一些适当的注释时,它会注入字节码以向类添加其他属性或行为.
因此,@Controller可以更改注释的控制器以扩展某些控制器基类,并且可以更改函数以在注释时实现路由@RequestMapping.
@Controller
public class HelloWorldController {
@RequestMapping("/helloWorld")
public String helloWorld(Model model) {
model.addAttribute("message", "Hello World!");
return "helloWorld";
}
}
Run Code Online (Sandbox Code Playgroud)
2.用于实例化的反射
@Autowired 可以通过BeanFactory在运行时反射来读取,以处理实例化顺序并实例化已配置的属性.
public class Customer
{
private Person person;
@Autowired
public void setPerson(Person person) {
this.person = person;
}
}
Run Code Online (Sandbox Code Playgroud)
Spring注释如何真正起作用?
Spring是开源的,所以你不需要弄清楚它是如何工作的,看看里面:
RequestMapping注释由处理RequestMappingHandlerMapping,请参阅getMappingForMethod方法.
自动装配Autowired注解被处理AutowiredAnnotationBeanPostProcessor,看processInjection方法.
两者都使用反射来获取注释数据,并在第一种情况下构建处理程序映射信息,或者在第二种情况下填充bean.
| 归档时间: |
|
| 查看次数: |
5103 次 |
| 最近记录: |