Java注解与Spring注解
2019-05-21 本文已影响0人
沐兮_d64c
1,元注解与自定义注解
1)
image.pngjava.lang.annotation
包中包含了所有定义自定义注解
所需要的元注解和接口。如java.lang.annotation.Annotation接口,被所有注解自动继承,类似Object
2)定义自定义注解
需要的元注解
@Documented :此注解会被javadoc工具提取成文档
@Retention :指定注解被保留到什么时候
image.png
@Target :指明适用此注解的上下文
image.png
@Inherited:注解被自动继承
3)自定义注解与使用
Spring的@Autowired注解
image.png
jdk的@Resource注解
image.png
2,自定义注解的使用
1)自定义注解与反射息息相关
image.png
类的Class对象中,提供判断注解是否存在的isAnnotationPresent方法
2)自定义注解声明成员
成员声明与(无参数、无异常的)接口方法类似。
如String name() default "" 为自定义注解声明了name成员,如果只有一个成员,最好命名为value。
3,Spring注解解析
1)Spring通过向容器注册
image.pngBeanPostProcessor
,来处理@Autowired、@Resource等注解的。
2)<context:annotation-config>
默认注册的4种beanPostProcessor。
CommonAnnotationBeanPostProcessor :主要处理@Resource、@PostConstruct和@PreDestroy注解的实现。
image.png
AutowiredAnnotationBeanPostProcessor:主要处理主要处理@Autowired、@Value、@Lookup和@Inject注解的实现。
image.png
image.png
RequiredAnnotationBeanPostProcessor:主要处理@Required注解的实现。
PersistenceAnnotationBeanPostProcessor:主要解析和处理@PersistenceUnit、@PersistenceContext注解。