美文网首页IT修真院_JAVA
使用注解需要有哪些配置?它的加载过程是怎样实现的?

使用注解需要有哪些配置?它的加载过程是怎样实现的?

作者: CodeBuilder | 来源:发表于2017-08-30 16:38 被阅读0次

PPT:https://ptteng.github.io/PPT/PPT-java/Java_task02_10.html#/

视频:https://v.qq.com/x/page/a0544sh8jq7.html

什么是注解

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

2.知识剖析

为什么要使用注解

优点:    1、节省配置,减少配置文件大小    2、编译时即可查看正确与否,提高效率    3.相对于配置文件而言更为简洁,易于配置

缺点:    1、增加了程序的耦合性,因为注解保存在class文件中,而且比较分散    2、若要对配置进行修改需要重新编译

3.常见问题

该如何在spring里加载注解?

在spring中,每使用一个注解就要声明一个bean

比如 :使用@Autowired注解,必须事先在Spring容器中声明AutowiredAnnotationBeanPostProcessor的Bean:

使用 @Required注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean:

类似地,使用@Resource、@PostConstruct、@PreDestroy等注解就必须声明 CommonAnnotationBeanPostProcessor;使用@PersistenceContext注解,就必须声明 PersistenceAnnotationBeanPostProcessor的Bean。

样的声明未免太不优雅,所以Spring为我们提供了一种极为方便注册这些BeanPostProcessor的方式,即使用context:annotation- config标签,隐式地向 Spring容器注册各种bean

另外,在我们使用注解时一般都会配置扫描包路径选项:context:component-scan base-package="pack.pack"/

该配置项其实也包含了自动注入上述processor的功能,因此当使用context:component-scan后,即可将context:annotation-config标签省去。

@autowired注解是如何加载的?自动注入是怎样实现的??

@autowired是通过动态代理和反射,在类加载过程中动态生成代理类,当初始化全局变量时,代理类跳到invoke方法,然后通过反射获取field字段对象,在method.invoke()的调用前即可实现注入。aop和拦截器以及常用注解等功能的实现都是基于动态代理实现的。

5.编码实战

6.扩展思考

为什么每次执行main函数,控制台信息的输出顺序会发生变化?

相关文章

网友评论

    本文标题:使用注解需要有哪些配置?它的加载过程是怎样实现的?

    本文链接:https://www.haomeiwen.com/subject/pccxjxtx.html